数据结构与算法排序本关的编程任务是补全 step1/direcInsSort.cpp 文件中的DirecInsSort函数,按照从小到大的排列顺序实现直接插入排序。
时间: 2024-09-09 08:03:03 浏览: 44
直接插入排序(Direct Insertion Sort)是一种简单直观的排序算法。在这个任务中,你需要编写`DirecInsSort`函数来完成步骤1,以下是基本思路:
1. **初始化**:假设数组已经存在,第一个元素默认视为有序部分,其余未排序的元素视为无序部分。
2. **遍历无序部分**:从第二个元素开始,对每一个元素(`current`),做以下操作:
a. 比较`current`与前一个元素(`prev`)。
b. 如果`current`小于`prev`,将`prev`移动一位,让位置给`current`,并保持较小的元素在前面。
c. 重复这个过程,直到`prev`大于等于`current`或`prev`变为第一个元素(即有序部分的边界)。
3. **递归过程结束**:当所有元素都被比较过或达到有序部分的末尾时,排序完成。
下面是`DirecInsSort`函数的基本伪代码形式:
```cpp
void DirecInsSort(int arr[], int n) {
for (int i = 1; i < n; ++i) {
int current = arr[i];
int prev = arr[i - 1];
while (prev > current && i > 0) {
// 交换 arr[i] 和 arr[i - 1]
arr[i] = arr[i - 1];
--i;
prev = arr[i - 1];
}
// 当 prev <= current 时,将 current 插入到正确位置
arr[i] = current;
}
}
```
阅读全文