資料結構中的7種排序方法-js實現
新技術一直在不斷變化,掌握一些基礎是未來學習不斷更新的技術的堅實基礎。近來閒來無事,為了溫習一下從前學的資料結構,將資料結構中的排序演算法用js實現了一遍
簡單排序
1.氣泡排序
氣泡排序是最簡單排序演算法,時間複雜度為n的平方,**如下:
function bubblesort(array)
}/* 輸出結果 */
document.write("這是第 + (i + 1) + "次迴圈·,結果為:");
for (var k = 0; k < array.length; k++)
document.write("
");/* 輸出結果結束 */}}
2.直接插入排序
直接插入排序也屬於簡單排序演算法,時間複雜度也為n的平方,但效能略好於氣泡排序,**如下:
function insertsort(array)
array[j] = temp
/* 輸出結果 */
document.write("第? + i + "遍排序的結果是:")
for (var n = 0; n < array.length; n++)
document.write("
")/* 輸出結果結束 */}}
3.選擇排序
選擇排序也屬於簡單排序演算法,時間複雜度也為n的平方,效能同樣略微好於氣泡排序,**如下:
function selectsort(array)
if (min != i)
/* 輸出結果 */
document.write("第 + i + "遍排序的結果是:")
for (var n = 0; n < array.length; n++)
document.write("
")/* 輸出結果結束 */}}
複雜排序
4.希爾排序
希爾排序是插入排序的公升級,2023年希爾通過將簡單排序中兩兩比較改為設定步長跳躍式比較而突破了n的平方的時間複雜度,希爾排序根據步長的不同時間複雜度由最好的nlogn到最壞的n的平方。**如下:
function shallsort(array)
array[j + increment] = temp;
/* 輸出結果 */
count++;
document.write("
第 + count + "遍排序的結果是:")
for (var n = 0; n < array.length; n++)
/* 輸出結果結束 */}}
}while (increment > 1)
}5.堆排序
堆排序是選擇排序的公升級,通過不斷構建大頂堆或者小頂堆來選擇最大或者最小的值放入佇列前端進行排序,堆排序任何情況下的時間複雜度都為nlogn,**如下:
function heapsort(array)
for (i = array.length - 1; i >= 0; i--)
/* 輸出結果結束 */}}
//要調整的子樹
//start為陣列開始下標
//max是陣列結束下標
function heapadjust(array, start, max)
if (temp >= array[j])
break;
array[start] = array[j];
start = j;
}array[start] = temp;
}6.歸併排序
歸併排序是複雜排序中唯一乙個穩定排序,通過將待排序陣列進行分拆再合併來進行排序,歸併排序時間複雜度為n的平方,**如下:
//source源陣列
//dest目標陣列
//s起始下標
//t目標下標
function msort(source, dest, s, t)
else
/* 輸出結果結束 */}}
//將兩個陣列按照從小到大的順序融合
//source原陣列
//dest排序後的陣列
//s第乙個下標
//m第二個陣列下標
//總長度
function merge(source, dest, s, m, n)
else
}//將剩餘排不完的有序陣列加入到dest的末端
if (s <= m)
}if (j <= n) }}
7.快速排序
快速排序是目前已知的速度最快的排序,時間複雜度為nlogn,**如下:
var count = 0;
function quicksort(array, low, high)
quicksort(array, low, keypoint - 1);
quicksort(array, keypoint + 1, high);}}
function quicksorthelp(array, low, high)
temp = array[low];
array[low] = array[high];
array[high] = temp;
while (low < high && array[low] <= array[high])
temp = array[low];
array[low] = array[high];
array[high] = temp;
}return low;
}
資料結構實訓 各種排序
任務 用程式實現插入法排序 起泡法改進演算法排序 利用插入排序和冒泡法的改進演算法,將使用者隨機輸入的一列數按遞增的順序排好。輸入的資料形式為任何乙個正整數,大小不限。輸出的形式 數字大小逐個遞增的數列。include using namespace std void insertsort int ...
資料結構的7中排序演算法
一 快速排序 1.簡單介紹 快速排序是由東尼 霍爾所發展的一種排序演算法。在平均狀況下,排序 n 個專案要 n log n 次比較。在最壞狀況下則需要 n2 次比較,但這種狀況並不常見。事實上,快速排序通常明顯比其他 n log n 演算法更快,因為它的內部迴圈 inner loop 可以在大部分的...
資料結構 常見的7種比較排序演算法1
直接插入排序 insert sort 1 演算法描述 該演算法是一種簡單直觀的是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。插入排序在實現上只需用到o 1 的額外空間的排序,因而在從後向前掃瞄過程中,需要反覆把已排序元素逐步向後挪位為最新元素提供插入空間。2 步...