#include <stdio.h>
#include <stdlib.h>
void mergeSort(int *arr, int len)
{
for (int j = 1; j < len; j++)
{
int key = arr[j];
int i = j - 1;
while (i >= 0 && arr[i] > key)
{
arr[i + 1] = arr[i];
i--;
}
arr[i + 1] = key;
}
}
int main(void)
{
int len = 20;
int *arr = (int *)malloc(len * sizeof(int));
for (int k = 0; k < 20; k++)
{
arr[k] = rand();
}
mergeSort(arr, len);
for (int i = 0; i < len; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
插入排序的思路很简单:首先数组首元素是有序的,可作为有序数组,j=1开始的所有元素都是无序的,作为无序数组。然后循环无序数组,每次取arr[j]去和有序数组的所有元素进行比较。有序数组最后一个元素下标设为i,则i = j - 1。第一次变量无序数组时,j = 1,i = 0,符合预期的i指向有序数组最后一个元素。
未完待续。。。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。