JS實現氣泡排序和快排

2021-10-23 01:18:02 字數 1664 閱讀 5072

冒泡的核心思想:每一輪確定乙個最大的數放到最右邊。就是雙重for迴圈遍歷,進行兩兩比較。

// 核心思想:每一輪比較,把乙個數歸位

function bubblesort(arr, arrlength) }}

}

注意

外層迴圈的條件:i < arrlength - 1.。這個裡面沒有 = 。因為,最後乙個數不需要再迴圈確定位置,其他數都歸位了,最後乙個數自然而然的就自動歸為了。

快排的核心思想:利用二分的思想進行比較交換實現排序。每一輪確定一組比基準大和比基準小的數交換。

快排的思想

通常,都把一組數的乙個數作為基準數。

1.從陣列右邊找比基準數小的數,若比基準數大,右邊的哨兵向左移動乙個位置;

只有當找到乙個比基準數小的數時,本次迴圈才會停止,也就是right哨兵停止位置

2.從陣列的左邊找比基準大的數,若比基準數小,左邊的哨兵 i 向右移動乙個位置;

只有當找到乙個比基準大的數時,跳出迴圈,i停止位置

3.迴圈結束時,i的位置的數是比基準數大的數,j的位置的數是比基準數小的數, i 和 j 對應的數進行交換

4.當i與j相遇, 右哨兵找到了乙個比基準數小的數,左哨兵沒有找到比基準數大的數,直到遇到右哨兵.

此時,交換要把基準數與i對應的位置的數,進行交換 .完成第一輪的交換

5. 基準數此時再中間,重複上面1 2 3 4的步驟對基準左邊的一組數和基準右邊的一組數排序。

// 快排

function quicksort(arr, left, right)

// 只有當 左邊下標小於右邊下標時,才進入迴圈

while (i < j)

// 2. 左邊哨兵出動 找比基準數大的

while (i < j && arr[i] < arr[right])

// 3. 當左邊哨兵找到比基準大的數 右邊哨兵比基準小的數 兩個數交換位置

var temp = arr[i];

arr[i] = arr[j];

arr[j] = temp;

}// 迴圈結束:i=j

// 重點:迴圈結束後,此時的arr[i]==arr[j] 是乙個比基準數小的數

// 4.交換:基準數---arr[i]或者arr[j]

temp = arr[i];

arr[i] = arr[left];

arr[left] = temp;

// 交換後的陣列,基準數在中間,基準數左側的都是比基準數小的數,基準數右側的都是基準數大的數

// 接著,按照同樣的思路,把基準數左邊一組數排序,右邊一組數排序

// 此時, 左邊一組數, 下標是 left - (i - 1)

// 右邊的陣列, 下標是(i + 1) - right

quicksort(arr, left, i - 1);

quicksort(arr, i - 1, right);

}

注意

先進入迴圈時,首先是右邊的哨兵出動,因為要確保跳出迴圈時,arr[ j ]是乙個比基準數小的數,這樣才能在迴圈結束後,把arr[ j ]與基準數交換,再進行排序。

氣泡排序和快排

1.氣泡排序 氣泡排序要點 1 兩層迴圈,外層迴圈控制走訪數列重複進行的次數,內層迴圈進行資料的比較 交換,是資料 上浮 2 內層迴圈是相鄰的資料進行比較。var bubblesort function arr console.log arr 1,1,2,3,4,6,7,8 bubblesort 1...

JS演算法 關於氣泡排序和快排

比較所有相鄰元素,如果第乙個比第二個大,則交換它們。執行n 1輪,則完成排序。array.prototype.bubblesort function console.log this console.log this const arr 25 84,21 47,15 27,68 35,20 arr....

python實現快排 氣泡排序

1 快排 快排 從一堆雜亂的資料中挑選乙個基準值,將這些數字和基準值一一比較,大的放基準值的右邊,小的放左邊 實現思路 定義乙個函式,挑選列表的首個數字作為基準值,其他數字比基準值小的數字生成列表,同理,其他數字和基準值大的數字生成另乙個列表,再遞迴快排這兩個列表 def quick sort nu...