十大排序演算法(C 實現)

2021-09-22 12:50:57 字數 3685 閱讀 1478

排序演算法

平均時間複雜度最好情況最壞情況空間複雜度穩定性

氣泡排序

o(n²)

o(n)

o(n²)

o(1)

穩定選擇排序

o(n²)

o(n²)

o(n²)

o(1)

不穩定插入排序

o(n²)

o(n)

o(n²)

o(1)

穩定希爾排序

o(nlogn)

o(o(n²)

o(1)

不穩定歸併排序

o(nlogn)

o(nlogn)

o(nlogn)

o(n + logn)

穩定快速排序

o(nlogn)

o(nlogn)

o(n²)

o(logn)

不穩定堆排序

o(nlogn)

o(nlogn)

o(nlogn)

o(1)

不穩定桶排序

o(n + k)

o(n + k)

o(n²)

o(n + k)

穩定計數排序

o(n + k)

o(n + k)

o(n + k)

o(k)

穩定基數排序

o(n × m)

o(n × m)

o(n × m)

o(n + m)

穩定

#include #include #include using namespace std;

void bubblesort(vector&q)

}if(!flag)

break;

}}int main()

bubblesort(q);

for(auto x : q)

cout << x << ' ';

cout << endl;

return 0;

}

#include #include #include using namespace std;

void selectionsort(vector&q)

}}int main()

selectionsort(q);

for(auto x : q)

cout << x << ' ';

cout << endl;

return 0;

}

#include #include #include using namespace std;

void insertionsort(vector&q)

q[j+1] = t;

}}int main()

insertionsort(q);

for(auto x : q)

cout << x << ' ';

cout << endl;

return 0;

}

#include #include #include using namespace std;

void shellsort(vector&q)

q[j+gap] = t;

}gap /= 2;

}}int main()

shellsort(q);

for(auto x : q)

cout << x << ' ';

cout << endl;

return 0;

}

#include #include #include using namespace std;

void mergesort(vector&q, int l, int r)

while(i <= mid)

w.push_back(q[i++]);

while(j <= mid)

w.push_back(q[j++]);

for(int i : w)

q[l++] = i;

}int main()

mergesort(q, 0, n - 1);

for(auto x : q)

cout << x << ' ';

cout << endl;

return 0;

}

#include #include #include #include using namespace std;

void quicksort(vector&q, int l, int r)

}}int main()

quicksort(q, 0, n - 1);

for(auto x : q)

cout << x << ' ';

cout << endl;

return 0;

}

#include #include #include #include #include using namespace std;

void push_down(vector& heap, int size, int u)

}void push_up(vector& heap, int u)

}void heapsort(vector&q, int n)

}int main()

桶排序的思想是我們首先要知道所有待排序的數的資料範圍,知道裡面的最大值和最小值各是多少。然後利用最大值和最小值分成若干個桶(資料區間),將所有待排序的數按照其大小分到這些桶(資料區間)中。在每個桶中分別利用排序演算法進行排序,這樣就完成了所有資料的排序。

這裡設所有待排序的數的範圍是從0~100的。

#include #include #include #include #include using namespace std;

void countingsort(vector&q, int n)

}}int main()

countingsort(q, n);

for(auto x : q)

cout << x << ' ';

cout << endl;

return 0;

}

這裡設所有待排序的數都不超過三位數,也就是說不超過999。

十大排序演算法 C 實現

include stdafx.h include include include using namespace std 1氣泡排序 void bubblesort vector int v 2選擇排序 void seletionsort vector int v 3插入排序 void insert...

十大排序演算法(c )

1.氣泡排序 每一輪都從頭開始比較,比較當前數與後一位數,若當前數大於後一位數則進行交換,每一輪都會在末尾得到一位排序正確的數,因此每一輪比較結束,下一輪的比較範圍將縮小 ja j 1 if ischange break 2.插入排序 每一輪將當前數 a i 插入到前面已經排序好的合適位置,因此關鍵...

十大排序演算法(C )

原理 比較相鄰兩個元素,如果前乙個比後乙個大則交換二者位置 以公升序為例 每進行一輪比較則可以把最大的元素放到相對最後的位置。每進行一輪比較就會有乙個元素變為有序。迴圈對每輪越來越少的元素進行比較則最終變為有序序列。如果序列元素初始時為有序,則一輪則可進行排序完畢,最好時間複雜度為o n 如果序列元...