/*
INSERTION SORT
插入排序(适用于小规模的数据排序)
时间复杂度 n^2
整体思路与玩牌是对手中扑克的排序方法类似
算法描述:
⒈ 从第一个元素开始,该元素可以认为已经被排序
⒉ 取出下一个元素,在已经排序的元素序列中从后向前扫描
⒊ 如果该元素(已排序)大于新元素,将该元素移到下一位置
⒋ 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
⒌ 将新元素插入到下一位置中
⒍ 重复步骤2
*/
#include<stdio.h>
int main()
{
int i, j;
//存取当前值作为临时变量
int key;
int sort_arr[10]={5,67,34,12,45,78,1,45,67,37};
//插入算法
for(j = 1; j < 10; j++)
{
//当前未排序值
key = sort_arr[j];
//将当前的下标标记位向前移动一位,表示已排序的结束位
i = j - 1;
//判定条件: 已排序部分的某元素大一当前未排序值
while(i >= 0 && sort_arr[i] > key)
{
//将该值向后移一位
sort_arr[i+1] = sort_arr[i];
//下标标记再向前一位
i = i - 1;
}
//将当前值放入已排序部分的相应位置
sort_arr[i+1] = key;
}
for(i = 0; i < 10; i++)
{
printf("%d ", sort_arr[i]);
}
printf("\n");
return ;
}
插入排序 insertion sort
最新推荐文章于 2023-12-31 22:33:21 发布