1. 程式人生 > >排序算法!

排序算法!

outer swap 遞歸 inner concat 中移動 快的 strong scrip

  JavaScript實現數組快速排序,主要思想是找到一個中間值,遞歸比較,創建兩個數組,左數組和右數組,如果比中間值小的放在左邊數組中,比中間值大的放在右邊數組中,最後將數組和中值合並,得到新的數組;

  快速排序是處理大數據集最快的排序算法之一。它是一種分而治之的算法,通過遞歸的方式將數據依次分解為包含較小元素和較大元素的不同子序列。該算法不斷重復這個步驟直到所有數據都是有序的。

function quicksort(arr){
    if(arr.length<=1){  //如果長度小於1 直接返回
        return arr;
    }
    // 取中值
    //
先得到中值的序號 var num = Math.floor(arr.length/2); //得到中間值 var numval = arr.splice(num,1); // 建立左右數組 var left = []; var right = []; // 循環,比中值小的放左邊,比中值大的放右邊 for (var i = 0,j = arr.length; i < j; i++) { if(arr[i]<numval){ left.push(arr[i]) }else{ right.push(arr[i]) } }
//遞歸 return quicksort(left).concat([numval],quicksort(right)); } var arr1 = [1,2,3,4,55,1,34,43,568,76,23,546,451,21] console.log(quicksort(arr1).toString());

  冒泡排序:是最慢的排序,但是是最容易的排序方法;

假設正在將一組數字按照升序排列,較大的值會浮動到數組的右側,而較小的值則會浮動到數組的左側。之所以會產生這種現象是因為算法會多次在數組中移動,比較相鄰的數據,當左側值大於右側值時將它們進行互換。

function bubblesort(){
    
var numElements = this.dataStore.length; var temp; for ( var outer = numElements; outer >= 2; --outer) { for ( var inner = 0; inner <= outer - 1; ++inner ) { if (this.dataStore[inner] > this.dataStore[inner + 1]) { swap(this.dataStore, inner, inner + 1); } } } }

  插入排序是基本排序算法中用時最短,效率最高的

排序算法!