當前位置:才華齋>IT認證>JAVA認證>

JavaScript快速排序實現例項教程

JAVA認證 閱讀(1.08W)

目前最常見的排序演算法大概有七八種,理解和掌握各種排序演算法似乎是一個合格的程式設計師所必須要掌握的。今天想要和大家分享快速排序演算法的Javascript的實現。

JavaScript快速排序實現例項教程

快速排序(Quicksort),又稱為 劃分交換排序(partition-exchange sort),最早是由東尼·霍爾提出的。

  基本思想

快速排序使用 分治法(Divide and conquer)策略(即分而治之,各個擊破)把一個序列(list)分為兩個子序列(sub-lists)。其基本步驟如下:

從數列中挑出一個元素,稱為 基準(pivot)。

重新排序數列,所有小於基準的元素,都移到基準的左邊;所有大於基準的元素都移到基準的右邊。這個分割槽結束之後,該基準處於數列的中間位置,稱為 分割槽(partition)操作。

對基準左邊和右邊的兩個子集,進行遞迴操作,即不斷重複第一步和第二步。直到所有子集只剩下一個元素為止。

  示例說明

下面我們舉個示例進行排序說明,數列為[8,7,0,7,5,2,5,3,1]。

第一步: 基準值選取。基準值可以任意選取,便於理解,這裡我們選擇中間值5作為基準。

[8,7,0,7, 5, 2,5,3,1]

第二步: 進行分割槽操作。按照順序將每個元素與基準進行比較,想成兩個子集,大於5與小於5.

[0,2,5,3,1, 5, 8,7,7]

第三步,遞迴操作。對兩個子集不斷重複第一步和第二步,直到所有子集只剩下一個元素為止。

[0,2, 5, 3,1] 5 [8, 7, 7][0,2,3,1, 5 ] 5 [7, 7, 8][0, 2, 3,1]5,5,7, 7, 8[0,1, 2, 3] 5, 5, 7, 7, 8[0,1,2,3,5,5,7,7,8]

Javascript的實現

講述了快速排序的`基本思想,下面就讓我們使用程式碼對其進行實現吧~

第一步: 定義函式quicksort,引數為一個數組。

var quicksort = function(arr){

};

第二步: 檢查陣列個數,小於等於1,則返回。

var quicksort = function(arr){ if(th <= 1){ return arr;

}

};

第三步: 進行基準選擇,定義兩個空陣列進行左右兩個子集元素的存放。

var quicksort = function(arr){ if(th <= 1){ return arr;

} var pivotIndex = r(th / 2); var pivot = ce(pivotIndex,1)[0]; var left = []; var right = []; for(var i = 0;i < th;i++){ if(arr[i] < pivot){

(arr[i]);

}else{

(arr[i]);

}

}

};

第四步: 遞迴操作。對兩個子集不斷重複第一步和第二步,直到所有子集只剩下一個元素為止。

var quicksort = function(arr){ if(th <= 1){ return arr;

} var pivotIndex = r(th / 2); var pivot = ce(pivotIndex,1)[0]; var left = []; var right = []; for(var i = 0;i < th;i++){ if(arr[i] < pivot){

(arr[i]);

}else{

(arr[i]);

}

} return quicksort(left)at([pivot],quicksort(right));

};

第五步: quicksort函式的呼叫

這裡可以直接定義一個數組,對函式進行呼叫即可。

var quicksort = function(arr){ if(th <= 1){ return arr;

} var pivotIndex = r(th / 2); var pivot = ce(pivotIndex,1)[0]; var left = []; var right = []; for(var i = 0;i < th;i++){ if(arr[i] < pivot){

(arr[i]);

}else{

(arr[i]);

}

} return quicksort(left)at([pivot],quicksort(right));

};var array = [8,7,0,7,5,2,5,3,1];

quicksort(array); //[0,1,2,3,5,5,7,7,8]

  小結

快速排序的基本思想還是比較簡單的,巧用了分治法策略 ~。