您的位置:首页 > 其它

插入排序 insertion sort

2013-07-08 04:11 211 查看
/*
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 ;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: