快速排序
其思想是:先選乙個「標尺」,
用它把整個佇列過一遍篩子,
以保證:其左邊的元素都不大於它,其右邊的元素都不小於它。
這樣,排序問題就被分割為兩個子區間。
再分別對子區間排序就可以了。
選擇排序
思想:重複選擇陣列內的最大值,交換到合適的位置。該排序方法比較慢。
堆排序
思想:堆實際上是一棵完全二叉樹,利用大頂堆(小頂堆)堆頂記錄的是最大關鍵字(最小關鍵字)這一特性,使得每次從無序中選擇最大記錄(最小記錄)。堆排序其實也是一種選擇排序,是一種樹形選擇排序。
歸併排序
思想:這是乙個採用分治法的演算法,先使每個子串行有序,再使子串行段間有序,再將已有序的子串行合併,這樣就能得到完全有序的序列。
桶排序
構建乙個雜湊函式hash(ai)用以均勻的將n個元素分配到n個桶中。
**一起上
#include
#include
#include
#include
#include
#include
#define maxsize 120
#define false 0
#define true 1
using
namespace
std;
typedef
struct
sqlist;
typedef
int redtype;
int comparecount;
//隨意資料的生成
void sortinit(sqlist *l)
while (j < i);
l->r[i] = temp;
}l->length = maxsize;
}//資料拷貝
void datacopy(sqlist l, sqlist &l1)
//直接插入排序
void insertsort(sqlist &l)
l.r[j + 1] = l.r[0];}}
}//希爾排序
void shellinsert(sqlist &l, int dk)
}return;
}void shellsort(sqlist &l )
return;
}//氣泡排序
void bubblesort(sqlist &l)
}m--;
}}//快排
int partition(sqlist &l, int low, int high)
l.r[low] = l.r[high];
while(low < high&&l.r[low]<= pivot)
l.r[low]= l.r[0];
return low;
}}void quicksort(sqlist &l, int low, int high)
return;
}void qsort(sqlist &l)
//直接選擇排序
void selectsort(sqlist &l) //直接選擇排序
}}//堆排序
void heapadjust(sqlist &l, int s, int m)// 演算法10.10
if(rc>l.r[j])
break; // rc應插入在位置s上
l.r[s]=l.r[j];
s=j;
}l.r[s]=rc; // 插入
}void heapsort(sqlist &l)
for(i=l.length;i>1;--i)
}//歸併排序
void merge(redtype sr,redtype tr,int i,int m,int n)
else
}if(i<=m)
for(l=0;l<=m-i;l++)
if(j<=n)
for(l=0;l<=n-j;l++)
}void msort(redtype sr,redtype tr1,int s, int t)
}void mergesort(sqlist &l)
//輸出排序結果
void outputsortdata(sqlist l)
getchar();
cout
void sort(sqlist l, sqlist &l1, int a[20][2], int no)
int main()
; sqlist l, l1, l2, l3;
sortinit(&l);
printf("(一)排序的結果為:\n");
sort(l, l1, a, 0);
printf("(二)各排序的比較次數為:\n");
for (int i = 1; i <= 7; i++)
system("pause");
return
0;}
C 常用排序模板
區分的主要依據就是演算法是否是基於比較的 leetcode排序 演算法視覺化 圖是leetcode題解上的 這裡不打算具體的說計數排序和桶排序,因為思路較為簡單 均在leetcode上測試過,可以放心的使用 class solution swap nums minn nums i return nu...
排序 快速排序 歸併排序模板 模板
正經人誰手寫這玩意?785.快速排序 本質 分治。是不穩定的排序演算法。時間複雜度 o n logn o nlogn o nlog n 空間複雜度 o l ogn o logn o logn 基於遞迴,用到棧空間 模板注意點 關於無限遞迴問題,大家動手模擬一遍樣例就能理解了。快排邊界問題很多,很煩 ...
排序 希爾排序模板
希爾排序又稱縮小增量排序 1 先取定乙個小於n的整數gap1作為第乙個增量,把整個序列分成gap1組。所有距離為gap1的倍數的元素放在同一組中,在各組內分別進行排序 分組內採用直接插入排序或其它基本方式的排序 一般gap1為n 2,一次往後類推 gap2 gap 2,若為奇數,則gap2 gap1...