8大排序總結

2021-06-18 11:01:10 字數 1803 閱讀 9257

#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 例項 上圖中將待排序列分成兩部分,一部分比基準元素小,一...