出去打工和儿子租房
  • javascript快速排序算法詳解

    2021-12-29 14:29發布

    JavaScript實現的常見排序算法有:冒泡排序,選擇排序,插入排序,謝爾排序,快速排序(遞歸),快速排序(堆棧),歸并排序,堆排序。今天我們來詳細分析下快速排序算法。

    快速排序是對冒泡排序的一種改進。通過一趟排序將要排序的數據分割成獨立的兩部分,其中一部分的所有數據都比另外一部分的所有數據都要小,然后再按此方法對這兩部分數據分別進行快速排序,整個排序過程可以遞歸進行,最終達到整個數據變成有序序列。

    假設要排序的數組是A[0]……A[N-1],首先任意選取一個數據(通常選用數組的第一個數)作為基準數據,然后將所有比它小的數都放到它前面,所有比它大的數都放到它后面,這個過程稱為一趟快速排序。值得注意的是,快速排序不是一種穩定的排序算法,也就是說,多個相同的值的相對位置也許會在算法結束時產生變動。

    一趟快速排序的算法是:

    1)設置兩個變量low、high,排序開始的時候:low=0,high=N-1;

    2)以第一個數組元素作為基準數據,賦值給base,即base=A[0];

    3)從high開始向前搜索,即由后開始向前搜索(high--),找到第一個小于base的值A[high],將A[high]和A[low]互換;

    4)從low開始向后搜索,即由前開始向后搜索(low++),找到第一個大于base的A[low],將A[low]和A[high]互換;

    5)重復第3、4步,直到low=high;

    實例演示:

    原數組arr =  [49,38,65,97,76,13,27,49]


    實例代碼:


    出去打工和儿子租房