插入排序算法
按照算法导论讲解,该算法适合少量数据的排序,时间复杂度O(n2)。
代码如下:
#include <stdio.h>
#define MAXSIZE 10
int insert_sort(int array[]);
/**
* 插入排序
*/
int insert_sort(int array[])
{
int index = 1;//索引,当前待排序的值的索引
int tmp_index = 0;//索引值,当前待比较的值的索引,临时变量
int tmp_value = 0;//数值,临时变量
while(index < MAXSIZE)
{
tmp_value = array[index];
tmp_index = index - 1;
while(tmp_index >=0)
{
if(array[tmp_index] >= tmp_value)
{
array[tmp_index + 1] = array[tmp_index];
}
else
{
array[tmp_index+1] = tmp_value;
break;
}
tmp_index --;
}
if(tmp_index == -1)
{
array[0] = tmp_value;
}
index ++;
}
return 1;
}
/**
* 主程序
*/
int main()
{
int array[MAXSIZE] = {4,-2,6,-1,0,3,2,4,-5,3};//数字组
int index = 0;//索引
//打印原有数字组
printf("Oringin array: ");
while(index < MAXSIZE)
{
printf("%d ", array[index]);
index ++;
}
printf("\n");
//排序,并打印排序后的数字组
insert_sort(array);
index = 0;
printf("Insert sort array: ");
while(index < MAXSIZE)
{
printf("%d ", array[index]);
index++;
}
printf("\n");
return 0;
}