当前位置: 代码迷 >> 综合 >> 数据结构--插入排序(C语言实现)
  详细解决方案

数据结构--插入排序(C语言实现)

热度:79   发布时间:2023-11-23 15:49:17.0

 需要用到的结构体

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];//如果不再交换,则找到了插入位置elsebreak;}L->Data[j] = temp;}
}

  相关解决方案