javascript 陣列快速排序

admin發表於2017-03-28

陣列排序的方式有多種多樣,下面分享一段程式碼例項,它實現了陣列快速排序。

程式碼如下:

[JavaScript] 純文字檢視 複製程式碼
function quickSort(arr){
  if(arr.length <= 1) return arr;
  var cut = Math.floor(arr.length/2);
  var left = [],right = [];
  var num = arr.splice(cut,1)[0];
  for(var index = 0;index < arr.length;index ++){
    if(arr[index] < num){
      left.push(arr[index]);
    }
    else {
      right.push(arr[index]);
    }
  }
  return quickSort(left).concat(num,quickSort(right));
}
var arr=[5,2,1,10,8,12,40,26,30];
console.log(quickSort(arr));

上面的程式碼實現了我們的要求,下面介紹一下它的實現過程。

一.程式碼註釋:

1.function quickSort(arr){},此函式實現了快速排序效果,引數就是將要進行排序的陣列。

2.if(arr.length <= 1) return arr,如果是個空陣列或者陣列只有一個元素,那麼就直接返回此陣列。

3.var cut = Math.floor(arr.length/2),將陣列的長度除以2,再進行下舍入。

4.var left = [],right = [],建立兩個孔陣列,分別用來存放小的和大的陣列元素。

5.var num = arr.splice(cut,1)[0],獲取索引為cut的陣列元素的值。

6.for(var index = 0;index < arr.length;index ++),遍歷陣列中的每一個元素。

7.if(arr[index] < num){left.push(arr[index]);},如果小於num,那麼就將資料存入left陣列。

8.else {right.push(arr[index]);},將大的寫入right陣列。

9.return quickSort(left).concat(num,quickSort(right)),再進行遞迴操作,最終會實現排序效果。

二.相關閱讀:

1.Math.floor()函式可以參閱javascript Math.floor()一章節。

2.splice()函式可以參閱javascript Array splice()一章節。

3.push()函式可以參閱javascript push()一章節。

4.concat()函式可以參閱js 陣列 concat()一章節。

相關文章