典型的比較排序演算法:插入排序、堆排序、快速排序。
根據演算法導論中出現的先後順序,首先出場的是插入排序
一.原版插入排序偽**:
1. for j=2 to a.length
為陣列a的長度
2.for i= j-1 downto 1
3.if a[i]>a[i+1]
4. exchange a[i] with a[i+1] //比較,若不符合遞增,則交換
5.i=i-1
6.else break
#includeusing namespace std;
void insertsort1(int * ival,int length);
void insertsort2(int * ival,int length);
int main()
; int alength=5;
for(int i=0;i!=5;++i)
else
} }}
void insertsort2(int *ival,int length)
else
}ival[i+1]=key;
}}
演算法改進1: c++中實現兩個陣列元素的交換需要三條**:temp=a[i];a[i]=a[i+1];a[i+1]=temp;通過下列演算法交換**只需一條指令實現。上述程式當中函式insertsort2是一條指令實現交換。
insertion-sort(a)
1. for j=2 to a.length 為陣列a的長度
2. key=a[j]
3. for i= j-1 downto 1
4. if a[i]>key
5. a[i+1]=a[i]
6. i=i-1
7. else break
8. a[i+1]=key
演算法分析:插入排序法的最壞情況時間為θ(n^2)插入排序適合原來順序就已經很好的序列。如演算法導論7.2-4習題所描述的銀行支票兌付問題。
總結 插入排序
一般來說,插入排序都採用in place在陣列上實現。具體演算法描述如下 1 從第乙個元素開始,該元素可以認為已經被排序 2 取出下乙個元素,在已經排序的元素序列中從後向前掃瞄 3 如果該元素 已排序 大於新元素,將該元素移到下一位置 4 重複步驟3,直到找到已排序的元素小於或者等於新元素的位置 5...
插入排序總結
所謂插入排序,就是把一組亂序的資料,依次拿出乙個,放入到一組已經排好序的資料中的正確的位置。又可以分為 直接插入排序 折半插入排序 二路插入排序 表插入排序 希爾排序 一 直接插入排序 相對比較簡單的一種排序方法,就是按照概念一步一步的操作,可以使用乙個for迴圈實現,具體 如下 直接插入排序 vo...
排序總結 插入排序
created by liyuanshuo on 2017 3 17.include insertion sort.h a unsort array n total numbers of element in array 1.從第乙個元素開始,該元素可以認為是已經被排序 2.取出下乙個元素,在已經排...