基於比較的排序——前提:
選擇排序
演算法:
資料移動是最少的:每次交換都會改變兩個陣列元素的值,選擇排序用了n次交換。交換次數和陣列的大小是線性關係。
**實現
void choosesort(int a,int n)
/** 交換元素 */
int tmp=a[j];
a[j]=a[min];
a[min]=tmp;
/** 更新最小元的資訊,從第二個元素開始查詢 */
j++;
min=j;
}}
插入排序(insertion sort)
演算法:
演算法特點:
**實現:
void insertsort(int a,int n)
}
希爾排序(shellsort)(衝破二次時間屏障的第一批演算法之一)
演算法:
時間複雜度分析:
使用hibbard增量的希爾排序最壞情形執行時間為o(n^(3/2))。
圖例:**實現:
void shellsort(int a,int n)
}
資料結構與演算法之路 6(排序)
一 排序方法與複雜度歸類 1 幾種最經典 最常用的排序方法 氣泡排序 插入排序 選擇排序 快速排序 歸併排序 計數排序 基數排序 桶排序。2 複雜度歸類 氣泡排序 插入排序 選擇排序 o n 2 快速排序 歸併排序 o nlogn 計數排序 基數排序 桶排序 o n 二 如何分析乙個 排序演算法 1...
資料結構1 排序
就算複習再緊張,也要動手實踐資料結構中的基本演算法,徹底理解演算法的本質。不要讓任何理由成為不程式設計的藉口。從快速排序開始,將演算法問題一一攻克。複習提綱 基本資料結構 棧和佇列,陣列和鍊錶 樹和二叉樹 二叉查詢樹 平衡二叉樹 雜湊表 排序演算法 選擇排序 氣泡排序和快速排序 堆和堆排序 計數排序...
資料結構 07 排序
簡單的排序方法 氣泡排序 選擇排序 插入排序 希爾排序。先進的排序方法 歸併排序 快速排序 堆排序 基數排序。1.演算法思想 每次在未排序的元素中兩兩比較找最大值,邊找邊從後往前儲存 未排序.第i大 第2大 第1大 一般情況,整個氣泡排序只需進行 k 1 k氣泡排序結束的條件是 在某一趟排序過程中沒...