直接插入排序算法
直接插入排序的基本思想是:第一次从R[0]~R[n-1]中选取最小值,与R[0]交换,第二次从R[1]~R[n-1]中选取最小值,与R[1]交换,....,第i次从R[i-1]~R[n-1]中选取最小值,与R[i-1]交换,.....,第n-1次从R[n-2]~R[n-1]中选取最小值,与R[n-2]交换,总共通过n-1次,得到一个按排序码从小到大排列的有序序列。
#include<stdio.h>
void InsertSort(int arr[], int len)
{
int i;//未排序序列带排序的元素下标
int j;//已排序序列最大元素的下标
int temp;
for (i = 1; i < len; ++i)
{
temp = arr[i];
for (j = i - 1; j >= 0 && arr[j] > temp; --j)
{
arr[j + 1] = arr[j];
}
arr[j + 1] = temp;
}
}
void show(int arr[], int len)
{
for (int i = 0; i < len; ++i)
{
printf("%d ", arr[i]);
}
printf("\n");
}
int main()
{
int arr[] = { 56, 6, 6, 2, 26, 32, 5, 1, 8, 2, 36 };
int len = sizeof(arr) / sizeof(arr[0]);
show(arr, len);
InsertSort(arr, len);
show(arr, len);
return 0;
}