1. 程式人生 > >排序之快排(JS)

排序之快排(JS)

index 而後 想是 其中 baidu lan tmp urn 部分

快速排序(Quicksort)是對冒泡排序的一種改進。

  它的基本思想是:通過一趟排序將要排序的數據分割成獨立的兩部分,其中一部分的所有數據都比另外一部分的所有數據都要小,然後再按此方法對這兩部分數據分別進行快速排序,整個排序過程可以遞歸進行,以此達到整個數據變成有序序列。

詳細描述:首先在要排序的序列 a 中選取一個中軸值,而後將序列分成兩個部分,其中左邊的部分 b 中的元素均小於或者等於 中軸值,右邊的部分 c 的元素 均大於或者等於中軸值,而後通過遞歸調用快速排序的過程分別對兩個部分進行排序,最後將兩部分產生的結果合並即可得到最後的排序序列。

js實現

//
交換數據 function swap(arr,i,j){ arr[i]=arr[i]+arr[j]; arr[j]=arr[i]-arr[j]; arr[i]=arr[i]-arr[j]; return arr; } //快排,一般index設置為0,從第一個數值開始 function fastSort( arr, left, right, index){ let tmp = arr[index]; //左邊和右邊是否相同,不同繼續尋找 while( right!=left){ //從最右邊找到一個比基準值小的數據,則進行交換
while(arr[right] <= tmp ){ right--; swap(arr,index,right); index = right; } //從最左邊找到一個比基準值大的數據,則進行交換 while(arr[left] >= tmp ){ left++; swap(arr,index,left); index = left; }
//以基準值索引為界,分別對其做序列以及有序列進行繼續排序 fastSort(arr, left, index-1); fastSort(arr, index+1, right); } return arr; }

排序之快排(JS)