数据结构--插入排序(C语言实现)
需要用到的结构体
struct LNode {
int Data[MAXSIZE]; //Data为待排序序列数组
int Last; //Last为最后一个元素的数组下标
};
typedef struct LNode *List;
void InsertionSort(List L);
关于插入排序,是先将要插入的数据提出来,再以这个数据为开始,向前遍历
这里,我们取一个例子来插入排序,假设4,5已排序好
这是比前面所有值都小的情况,那么,另一种情况就是没遍历结束就找到了插入位置(那么我们直接让它跳出循环即可),也就是前一个比后一个小的情况,这时候就不需要交换位置了
所以我们可以写下实现函数
void InsertionSort(List L) {
int temp = 0;
//插入n-1次
for (int i = 1; i <= L->Last; i++) {
temp = L->Data[i];//保存要插入的数据
int j = i;
for (j; j > 0; j--) {
if (temp < L->Data[j - 1])
L->Data[j] = L->Data[j - 1];
//如果不再交换,则找到了插入位置
else
break;
}
L->Data[j] = temp;
}
}
