一、學習要點:
1.直接插入的核心思想:將給定數組看成是有序表和無序表組成;開始時有序表只有1個元素,無序表包含n-1個元素,排序過程是每次從無序數組中抽取一個元素,把它插到有序數組中的適當位置,最後形成新的有序表;
2.首先找到應該插入的位置,插入位置之後的所有元素向後移位,移位之前要插入數據及時保存;
3.爲防止移位後的數據覆蓋問題,要移位的所有元素從最後移位開始;
二、代碼:
#include<stdlib.h>
#include<iostream>
using namespace std;
void insert_sort(int *arr,int n){
int i,j,k;
for(i=1;i<n;i++)
{
for(j=i-1;j>=0;j--)
{
if(arr[i]>arr[j])
{
break;
}
}
int temp=arr[i];
for(k=i-1;k>j;k--)
{
arr[k+1]=arr[k];
}
arr[j+1]=temp;
}
}
int main()
{
int a[10]={9,8,7,6,5,4,2,3,1,0};
insert_sort(a, 10);
for (int i = 0; i < 10; i++)
{
cout << a[i] << endl;
}
system("pause");
return 0;
}