数据结构--插入排序(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; } }