#include#includeusing namespace std;
void select_sort(vector&a); //選擇排序 非穩定
void bubble_sort(vector&a); //氣泡排序
void insert_sort(vector&a); //插入排序 有序最快
void shell_sort(vector&a);//希爾排序 分組插入排序 非穩定
void merge_sort(vector&a);//歸併排序 最少比較次數
void heap_sort(vector&a);//堆排序 非穩定
void quick_sort(vector&a);//快速排序 非穩定
void count_sort(vector&a);//計數排序
inline void swap(int &a,int &b)
void select_sort(vector&a) //選擇排序 非穩定
}void bubble_sort(vector&a)
}void insert_sort(vector&a)
a[j]=tmp; }}
void shell_sort(vector&a)
a[j]=tmp;
}}//歸併排序
void merge(vector&a,int left,int mid,int right,vector&b)
while(i<=mid)
b[k++]=a[i++];
while(j<=right)
b[k++]=a[j++];
for(int i=left;i<=right;i++)
a[i]=b[i];
}void merge_help(vector&a,int left,int right,vector&b)
void merge_sort(vector&a)
//堆排序
inline int leftchild(int i)
//大根堆下濾
void percdown(vector&a, int i,int n)
a[i]=tmp;
}void heap_sort(vector&a)
}//快排
int media(vector&a,int left,int right)//首中尾法取中間元
void quick_help(vector&a,int left,int right)
//計數排序,10000以內
void count_sort(vector&a)
; for(int i=0;i!=int(a.size());i++)
hash[a[i]]++;
int cnt=0;
for(int i=0;i!=10001;i++) }
int main()
; vectorivect;
//select_sort(ivect); //選擇排序 非穩定
//bubble_sort(ivect); //氣泡排序
//insert_sort(ivect); //插入排序 有序最快
//shell_sort(ivect);//希爾排序 分組插入排序 非穩定
//merge_sort(ivect);//歸併排序 最少比較次數
//heap_sort(ivect);//堆排序 非穩定
quick_sort(ivect);//快速排序 非穩定
//count_sort(ivect);
return 1;
}
8大排序演算法
一 各個排序演算法的過程 1 直插入排序 乙個個的進行插入,直到有序序列。穩定的。要點 設立哨兵,作為臨時儲存和判斷陣列邊界之用。具體實現 如下 時間複雜度 o n 2 void insertsort int a,int n 3 選擇排序 按大小順序一次選出,進行公升降排列。在要排序的一組數中,選出...
8大排序整理
2.選擇排序 3.插入排序 4.歸併排序 5.基數排序 最快平均 最慢空間複雜度 穩定性複雜性 o n o n2 o n2 o 1 穩定簡單 氣泡排序是一種用時間換空間的排序方法 最壞情況是把順序的排列變成逆序,或者把逆序的數列變成順序,最差時間複雜度o n 2 只是表示其操作次數的數量級。最好的情...
8大排序3大查詢(二)
6 快速排序 1 基本思想 選擇乙個基準元素 通常選擇第乙個元素或者最後乙個元素 通過一趟掃瞄,將待排序列分成兩部分 一部分比基準元素小 一部分大於等於基準元素 此時基準元素在其排好序後的正確位置 然後再用同樣的方法遞迴地排序劃分的兩部分。2 例項 上圖中將待排序列分成兩部分,一部分比基準元素小,一...