假設:有n個元素的陣列array[n-1],未進行排序,現要求從小到大進行排序。
簡述:將陣列分成兩個部分,乙個已排序部分,乙個未排序部分。將未排序部分的第乙個元素與已排序部分的所有元素比較,需要時進行交換。以此類推。
第一輪:下標0(array[0])為已排序部分(1個元素不要排序就是已排序),array[1]至array[n-1]為未排序部分。
第二輪:array[0]與array[1]為已排序部分,array[2]至array[n-1]為未排序部分。
...
最後一輪(第n-1輪):array[0]至array[n-2]為已排序部分,array[n-1]為未排序部分。
#include using namespace std;
void sort_insert(int a, int n);
void output(int a, int n);
int main(int argc, char *argv)
void sort_insert(int a, int n)
a[j + 1] = t;
}}void output(int *a, int n)
#include using namespace std;
#define debug 1
void sort_insert(int a, int n);
void output(int a, int n);
int main(int argc, char *argv)
sort_insert(array, num);
if(debug) cout << "after sorting, the numbers are as following:" << endl;
output(array, num);
return 0;
}void sort_insert(int a, int n)
}a[j + 1] = t;
if(debug)
}}void output(int *a, int n)
需要檢視具體排序過程:
#define debug 1
不需要檢視具體排序過程:
#define debug 0
please input an integer.
please input 5 integers.
before sorting, the numbers are as following:
5 4 3 2 1
s1: 0, 1: t = 4: 5 5 3 2 1
s2: 0, 1: t = 4: 4 5 3 2 1
s1: 1, 2: t = 3: 4 5 5 2 1
s1: 0, 1: t = 3: 4 4 5 2 1
s2: 0, 2: t = 3: 3 4 5 2 1
s1: 2, 3: t = 2: 3 4 5 5 1
s1: 1, 2: t = 2: 3 4 4 5 1
s1: 0, 1: t = 2: 3 3 4 5 1
s2: 0, 3: t = 2: 2 3 4 5 1
s1: 3, 4: t = 1: 2 3 4 5 5
s1: 2, 3: t = 1: 2 3 4 4 5
s1: 1, 2: t = 1: 2 3 3 4 5
s1: 0, 1: t = 1: 2 2 3 4 5
s2: 0, 4: t = 1: 1 2 3 4 5
after sorting, the numbers are as following:
1 2 3 4 5
直接插入排序演算法
直接插入演算法 有乙個已經有序的資料序列,要求在這個已經排好的資料序列中插入乙個數,但要求插入後此資料序列仍然有序,這個時候就要用到一種新的排序方法 插入排序演算法,插入排序的基本操作就是將乙個資料插入到已經排好序的有序資料中,從而得到乙個新的 個數加一的有序資料,演算法適用於少量資料的排序,時間複...
直接插入排序演算法
撲克牌是我們幾乎每個人都可能從事過的遊戲。而最基本的撲克玩法都是一邊摸牌,一邊理牌。假如我們拿到了這樣一手牌,如圖9 5 1。啊,似乎是同花順呀,別急,我們得理一理順序才知道是否是真的同花順。請問,如果是你,應該如何理牌呢?應該說,哪怕你是第一次玩撲克牌,只要認識這些數字,理牌的方法都是不用教的。將...
直接插入排序演算法
每次將乙個待排序的記錄按其關鍵字的大小插到前面已經排序的序列中的適當位置,直到全部記錄插入完畢為止。第一趟比較前兩個數,然後把第二個數按大小插入到有序表中 第二趟把第三個資料與前兩個數從後向前掃瞄,把第三個數按大小插入到有序表中 依次進行下去,進行了 n 1 趟掃瞄以後就完成了整個排序過程。將待插入...