Comprender la clasificación de burbujas y la clasificación rápida y la implementación del código JS

1. Clasificación de burbujas

principio

Se sabe que un arreglo es un conjunto de datos, compara dos números adyacentes, si arr[i]>arr[i+1], intercambia las posiciones de los dos.

Por ejemplo, en la matriz [1, 4, 9, 0, 3, 7, 2]:

  • Primera ronda: 1<4, no intercambian posiciones; 4<9, no intercambian posiciones; 9>0, intercambian posiciones de 0 y 9; 9>3, intercambian posiciones; 9>7, intercambian posiciones; 9>2, posiciones de intercambio Ubicación. Termina la primera ronda de clasificación, el resultado es [1,4,0,3,7,2,9]

  • La segunda ronda: 1<4, no intercambiar posiciones; 4>0, intercambiar posiciones; 4>3, intercambiar posiciones; 4<7, no intercambiar posiciones; 7>2, intercambiar posiciones; 7<9, no intercambiar posiciones. Termina la segunda ronda de clasificación, el resultado es [1,0,3,4,2,7,9]

  •  Repita los pasos anteriores, el resultado final es: [0,1,2,3,4,7,9]

implementación JS

        En el ejemplo anterior, la comparación entre 7 y 9 de la segunda ronda es realmente redundante, porque el valor más grande se ha puesto al final de la primera ronda. De igual forma, 4 y 7 en la tercera ronda. No hay necesidad de comparar, así que cada vez solo necesita comparar el índice de 0 a longitud - 1 - i

    // 冒泡排序
    let numArr = [1, 4, 9, 0, 3, 7, 2];
    for (let i = 0; i < numArr.length - 1; i++) {
      for (let j = 0; j < numArr.length - 1 - i; j++) {
        // 如果当前元素大于后一个元素 ,交换位置
        if (numArr[j] > numArr[j + 1]) {
          numArr[j] = numArr[j] + numArr[j + 1];
          numArr[j + 1] = numArr[j] - numArr[j + 1];
          numArr[j] = numArr[j] - numArr[j + 1];
        }
      }
    }
    console.log(numArr)

2. Clasificación rápida

principio

        Cada vez que se selecciona un valor, generalmente el primer elemento de la matriz, el valor mayor que el valor se coloca a la derecha y el valor menor que el valor se coloca a la izquierda. Siga este paso para clasificar los datos a la izquierda y a la derecha respectivamente, y repita este paso hasta que finalice la clasificación.

Por ejemplo, en la matriz [1, 4, 9, 0, 3, 7, 2]:

implementación JS

    // 快速排序
    let arr = [5, 4, 3, 1, 6, 3, 8, 7];
    function quickSort(arr, val) {
      if (arr.length <= 1) {
        return arr;
      }
      let pivot = arr[0]; // 选取基准值
      let leftArr = [];
      let rightArr = [];
      for (let i = 1; i < arr.length; i++) {
        if (arr[i] < pivot) {
          leftArr.push(arr[i]); 
        } else {
          rightArr.push(arr[i]);
        }
      }
      let leftSorted = quickSort(leftArr,'left'); // 对左侧数组进行递归排序
      let rightSorted = quickSort(rightArr,'right'); // 对右侧数组进行递归排序
      return leftSorted.concat([pivot], rightSorted); // 合并左、中、右三个数组
    }
     console.log(quickSort(arr)) 

Resumir

        Este artículo presenta los dos métodos de clasificación de burbujas y clasificación rápida, e implementa estos dos métodos de clasificación con JS. Si hay algún error, corríjame.

Supongo que te gusta

Origin blog.csdn.net/sxww_zyt/article/details/129879163
Recomendado
Clasificación