插入排序算法: 将第一个数据看作是有序的,第二个到最后一个看成无序; 从头到尾开始扫描未排序数据,将未排序数据插入到相应有序位置的合适位置即可。
实现:
void insert_sort(int *arr, int len)
{
assert(arr != NULL && len > 0);
int j = 0;
int k = 0;
int tmp;
for(int i = 0; i < len-1; ++i) //6, 4, 1, 3, 5, 8,7,2
{
if(arr[i+1] < arr[i])
{
tmp = arr[i+1];
j = i;
while(tmp < arr[j] && j >= 0)
{
arr[j+1] = arr[j];
--j;
}
arr[j+1] = tmp;
}
}
}
int main()
{
int arr[] = {6, 4, 1, 3, 5, 8,7,2};
int len = sizeof(arr)/sizeof(arr[0]);
insert_sort(arr, sizeof(arr)/sizeof(arr[0]));
return 0;
}