
插入排序
百度百科上面有一個不錯的例子是這樣描述插入排序的,插入排序的作業方式像許多人排序一手撲克牌,開始時,我們的左手為空并且桌子上的牌面向下,然后,我們每次從桌子上拿走一張牌并將它插入左手中正確的位置,為了找到一張牌的正確位置,我們從右到左將它與已在手中的每張牌進行比較,這樣,拿在左手上的牌總是排序好的,
用一個動態圖演示插入排序程序:

首先把陣列第一個元素a[0]看作是一個有序數列,然后a[1]開始與a[0]做比較,發現10比7大,那么a[1]的值需要插入在a[0]的前面,表示下來就是a[0]的值往后移到a[1],然后a[1]的值移向a[0],然后再拿a[2]與之前的有序數列a[0],a[1]做比較,發現12大于10和7,那么原來的a[0]的值和a[1]的值,繼續向右移動一個單位,把a[2]的值插入a[0],如此,a[0],a[1],a[2]就是一個有序數列,如此往復,直到之后排序完成,
插入排序原理
1、將待排序序列第一個元素看做一個有序序列,把第二個元素到最后一個元素當成是未排序序列;
2、取出下一個元素,在已經排序的元素序列中從后向前掃描;
3、如果該元素(已排序)大于新元素,將該元素移到下一位置;
4、重復步驟3,直到找到已排序的元素小于或者等于新元素的位置;
5、將新元素插入到該位置后;
6、重復步驟2~5,
代碼
int arr[] = { 1,5,69,8,10 };
int j;
for (int i = 1; i < 5; i++)
{
int temp = arr[i];
for (j = i - 1;j >= 0 && arr[j] < temp;j--)
{
arr[j + 1] = arr[j];
}
arr[j+1]= temp;
}
CSDN認證博客專家
Qt
C
C++
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/260608.html
標籤:其他
