整理了一下幾種簡單的排序演算法,暫時先貼上演算法,以後有時間在乙個乙個注釋
參考:下面是**部分:
#include //演算法1:氣泡排序,時間複雜度o(n^2)
//基本思想:從最後乙個數開始,每次相鄰兩個數字比較,較小數往上浮動
void bubblesort(int *a,int c)
} }}//演算法2:選擇排序,時間複雜度o(n^2)
//基本思想:每次選出一最小的數放在前面,依次類推
void selectsort(int *a,int c)
temp=a[i];
a[i]=a[key];
a[key]=temp; }}
//演算法3:插入排序,時間複雜度o(n^2)
//基本思想:假設該陣列前n-1個是排好的,將第n個插入已排好的佇列中
void insertsort(int *a,int c) }}
//演算法4:希爾排序
//基本思想:插入排序的改進,按增量d分組插入排序,最後乙個增量為1
void shellsort(int *a,int c)
a[i]=key;
quicksort(a,left,i-1);
quicksort(a,i+1,right);
}//演算法6:堆排序
//基本思想:先構建大頂堆,將根結點和最後乙個元素交換,一直迴圈到根節點
void heapadjust(int *a,int p,int c)
}void heapsort(int *a,int c)}
//演算法7:歸併排序
//基本思想:先分割,排序後歸併
void merge(int *a,int *b,int start,int middle,int end)
while(i<=m)
b[k++]=a[i++];
while(j<=n)
b[k++]=a[j++];
for(i=start,k=0;i<=end;i++)
a[i]=b[k++];
}void mergesort(int *a,int *b,int start,int end)
{ int middle=(start+end)/2;//分割點
if(start
幾種簡單的排序演算法
1 插入排序 直接插入排序 希爾排序 2 交換排序 氣泡排序 快速排序 3 選擇排序 直接選擇排序 堆排序 4 歸併排序 5 分配排序 基數排序 所需輔助空間最多 歸併排序 所需輔助空間最少 堆排序 平均速度最快 快速排序 不穩定 快速排序,希爾排序,堆排序。1.直接插入排序 1 基本思想 在要排序...
回顧幾種簡單的排序演算法
第一次寫部落格希望能寫的好一點把 回顧了一下幾種經典的排序演算法 氣泡排序 選擇排序 快速排序 插入排序。氣泡排序是一種簡單的排序演算法,它通過從前往後比較相鄰元素,使得較大的數向後 冒 每一趟可以確定乙個最大的數。相當於在末尾不斷排乙個反向的降序序列。從前往後比較相鄰的元素,如果前乙個元素比後乙個...
幾種簡單的排序演算法總結
注 1 以下所有排序演算法均按照從小到大的順序排列 2 以下演算法中用到的交換函式都一樣,如下 void swap int a,int i,int j 因此不在每個排序演算法中進行詳解 1.氣泡排序 1.最簡單的氣泡排序 思想 該排序演算法在排序的過程中總共進行n 1趟排序,每一趟排序都將當前的關鍵...