氣泡排序 希爾排序 歸併排序 快速排序效能分析

2021-09-11 09:13:22 字數 1506 閱讀 5212

本**用來測量分析氣泡排序、希爾排序、歸併排序 和快速排序在陣列大小不同的情況下的用時情況。

使用函式比較兩個陣列是否一致:

bool check(int*s, int*s2,int len)

s[k+gap] = temp;}}}}}

歸併排序

void gsort(int*  s,int l, int r) 

for(int t=0;t

快速排序

void qsort(int* a, int l, int r)

a[i] = x;

qsort(a, l, i-1); 

qsort(a, i+1, r);

}}void isort(int a, int n)}}

氣泡排序

void bsort(int a, int n) 

}if (flag==0)

break;            }}

int main() {   

srand(time(null));

for(int i=0; i

結果比較:

use = 1000 時:

use太小時,前面幾個演算法比較不出什麼差異,只有氣泡排序慢5ms

use = 10000 時:

use擴大十倍,algrightm 自帶的快速排序大約耗時一毫秒,自己寫的快速排序更快,但未明顯。插入排序與氣泡排序開始感覺到延遲。

use = 50000 時:

use = 99000 時:

總結:1.在陣列沒有規律時,插入排序比氣泡排序要快不少。

2.提供的sort方法雖然經過了很多優化,但是在普通的陣列排序時,速度可能會低於普通的快速排序演算法。

(以上演算法均出自作者原創,不能確保完全正確,如有不足之處望及時指出)

排序演算法 氣泡排序,歸併排序,快速排序

氣泡排序 屬於交換排序的一種。很好理解的交換排序是這樣的 for int i 0 i n i for int j i 1 j n j 這個演算法的邏輯是從頭到尾掃瞄元素,將這個元素和它後面的所有元素進行比較,如果有比它更小的,那就交換,最後交換的一定是最小的,然後元素指標i後移,再比較它後邊的所有元...

氣泡排序,快速排序,堆排序,歸併排序

1.氣泡排序 1 基本思想 從無序序列頭部開始,進行兩兩比較,根據大小交換位置,直到最後將最大 最小 的資料元素交換到了無序序列的隊尾,從而成為有序序列的一部分 下一次繼續這個過程,直到所有資料元素都排好序。演算法的核心在於 每次通過兩兩比較交換位置。選出剩餘無序序列裡最大 最小 的資料元素放到隊尾...

排序演算法 氣泡排序 快排 歸併排序

氣泡排序 bubble sort 也是一種簡單直觀的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。步驟 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同...