本文實例講述了基于JavaScript實現的快速排序算法。分享給大家供大家參考,具體如下:
首先要介紹一下冒泡排序,冒泡排序的過程很簡單,首先將第一個記錄的關鍵字和第二個記錄的關鍵字進行比較,若為逆序,則將兩個關鍵字交換,然后比較第二個和第三個,直到最后一個比較完成。這是第一趟冒泡,其結果使得關鍵字最大的記錄被安置到最后一個位置上了。然后對序列前n-1個元素進行第二次冒泡,將倒數第二個選出。以此類推直到所有被選出,冒泡結束。
通過分析可以得出,冒泡排序的時間復雜度為O(n2)。
快速排序是對冒泡排序的一種改進,它是處理大數據集最快的排序之一,通過遞歸的方式將數據依次分解為包含較小元素和較大元素的不同子序列,不斷重復該過程直到所有數據都是有序的。這個算法首先要選擇一個基準值,圍繞基準值進行。
示例如下:
算法思想如下:
選擇一個基準元素,將列表分為兩個子序列;
對列表重新排序,將所有小于基準元素的元素放前面,大的放后面;
分別對較小元素的子序列和較大元素的子序列重復上面兩個步驟。
我們通過js實現代碼如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>JavaScript快速排序</title> </head> <body> <script type="text/javascript"> function qSort(nums) {//快速排序 if(nums.length==0){ return []; } var lesser=[]; var greater=[]; var pivot=nums[0];//選擇基準元素 for(var i=1;i<nums.length;i++){ if(nums[i]<pivot){//分成兩個之序列 lesser.push(nums[i]); }else{ greater.push(nums[i]); } } return qSort(lesser).concat(pivot,qSort(greater));//遞歸 } function show(nums){//顯示數組 for(var i=0;i<nums.length;i++){ document.write(nums[i]+' '); } document.write('<br>'); } var nums=[68,80,12,80,95,70,79,27,88,93]; show(nums);//newNums var newNums=qSort(nums);//希爾排序 show(newNums);//0 0 2 3 4 5 5 6 8 9 </script> </body> </html>
就平均時間而言,快速排序是目前被認為最好的一種內部排序方法??焖倥判蚍浅_m用于大型數據集合,在處理小數據集時性能反而會下降。其時間復雜度為O(nlog2n)
更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《JavaScript數據結構與算法技巧總結》、《JavaScript數學運算用法總結》、《JavaScript排序算法總結》、《JavaScript遍歷算法與技巧總結》、《JavaScript查找算法技巧總結》及《JavaScript錯誤與調試技巧總結》
希望本文所述對大家JavaScript程序設計有所幫助。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。