//選擇排序
void selectsort(int a,int n)
}}
//歸併排序(分治法遞迴)
void merge(int r[ ], int r1[ ], int s, int m, int t)
while(i<=m) //若第乙個子串行沒處理完,則進行收尾處理
r1[k++]=r[i++];
while(j<=t) //若第二個子串行沒處理完,則進行收尾處理
r1[k++]=r[j++];
}void mergesort(int r[ ],int s, int t)
}
//快速排序 (分治法遞迴)
int partition(int r[ ], int first, int end)
}}
//堆排序
void heapsort(int r,int n)
for(i=1;i<=n-1;i++)
}
下面是我的一些測試示例:
注意有的是閉區間,有的是開區間。
int main();
int b=;
selectsort(a,10); //1
bubblesort(a,10); //2
mergesort(a,0,9); //3 閉區間
quicksort(b,0,6); //4 閉區間
insertsort(b,7);
heapsort(a,10);
return 0;
}
幾種常用排序演算法總結
排序 強力推薦,這個算是總結的不錯的一篇文章,直接轉了 文章中的 也許有些錯誤,關於直接插入排序,第一篇已經做出了修改,其他的有時間再看 所謂排序,就是要整理檔案中的記錄,使之按關鍵字遞增 或遞減 次序排列起來。當待排序記錄的關鍵字都不相同時,排序結果是惟一的,否則排序結果不惟一。在待排序的檔案中,...
幾種常用排序演算法總結
所謂排序,就是要整理檔案中的記錄,使之按關鍵字遞增 或遞減 次序排列起來。當待排序記錄的關鍵字都不相同時,排序結果是惟一的,否則排序結果不惟一。在待排序的檔案中,若存在多個關鍵字相同的記錄,經過排序後這些具有相同關鍵字的記錄之間的相對次序保持不變,該排序方法是穩定的 若具有相同關鍵字的記錄之間的相對...
幾種排序演算法總結
注 以下所有排序演算法都是按照整數值從小到大排序。思想 對於乙個序列,走一趟把最大數冒到最後面。示例 對於序列4,10,1,6,2,7,3,8如下圖 紅框表示下一趟需要處理的子串行 即總共需要走n趟,當第i趟走完時倒數i個數是有序的。for i 0 i n i 優化 由上面的示意圖可知,當第4趟走完...