直接插入排序思想
将数组分为有序区和无序区,每次从无序区中取出一个元素,插入到有序区适当的位置,一开始有序区只有一个数,无序区有n-1个数。
每遍历一次,有序区中元素增加一个,无序区中元素减少一个,完成排序。
下图为直接插入排序流程图:
直接插入排序代码
void straightSort(int *arr,int len)
{
int tmp = 0;
int j = 0;
for(int i = 1;i<len;i++)
{//i表示无序表第一个元素的下标
tmp =arr[i];
for(j=i-1;j>=0&&arr[j]>tmp;j--)
{//找到合适位置
arr[j+1] = arr[j];
}
arr[j+1] = tmp;
}
}