编写函数实现直接插入排序 编写函数实现直接插入排序。输入若干正整数,以0结束,采用直接插入排序将这些整数按照从大到小的顺序排序。 函数接口定义: void InsertSort(SqList &L); 其中 L 是待排序的关键字,采用顺序表存储。
时间: 2024-03-22 08:41:43 浏览: 113
好的,以下是直接插入排序的 C++ 实现:
```
void InsertSort(SqList &L) {
int i, j;
for (i = 2; i <= L.length; i++) { // 从第二个元素开始,即第一个无序元素
if (L.data[i] > L.data[i-1]) continue; // 如果该元素比它前一个元素大,说明已有序,无需排序
L.data[0] = L.data[i];
for (j = i-1; L.data[j] < L.data[0]; j--) // 从后向前查找插入位置
L.data[j+1] = L.data[j]; // 向后移动元素
L.data[j+1] = L.data[0]; // 插入元素
}
}
```
这个函数实现了对顺序表 `L` 的直接插入排序。其中,`L.data` 是存储关键字的数组,`L.length` 是顺序表中元素的个数。
函数的主要思路是:从第二个元素开始循环,如果该元素比它前一个元素大,说明已有序,无需排序。否则,将该元素插入到前面有序序列的适当位置,同时将后面的元素依次向后移动一位。循环结束后,`L` 中的元素就按照从大到小的顺序排好了。
阅读全文