直接插入排序
一、定义
直接插入排序是最简单的排序方法,它的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录增1的有序表。
二、具体实现
整个排序过程为进行n - 1趟插入,即先将序列中的第一个记录看成是一个有序的子序列,然后从第二个记录开始逐个进行插入,直至整个序列变成按关键字非递减有序为止。
从空间来看,它只需要一个记录辅助空间,从时间来看,排序的基本操作为:比较两个关键字的大小和移动记录。直接插入排序是稳定排序算法,时间复杂度为o(n^2);
//list[0]不做哨兵
void insert_sort(ElementType list[],int n){
ElementType temp;//辅助存储空间
int i,j;
for(i = 1;i < n;i++){
temp = list[i];
for(j = i - 1;j >= 0 && list[j] > temp;j--)//往后移动,直至遇到比temp小的值为止。
list[j + 1] = list[j];
list[j + 1] = temp;//插入位置
}
}