C++ 实现希尔排序算法目的:领会希尔排序的过程和算法设计。 内容:编写一个程序 exp10-3.cpp 实现希尔排序算法,用相关数据进行测试,并输出各趟的排序结果
时间: 2025-06-02 16:36:21 浏览: 18
希尔排序(Shell Sort)是一种插入排序的优化版本,它通过将待排序的元素按照一定增量分组,对每组再进行插入排序,随着增量逐渐减小,最终达到直接插入排序的效果。这个过程可以提高排序效率,特别适用于大数组。
在C++中实现希尔排序,首先你需要定义一个函数,比如`shellSort`,它接受一个整数数组作为输入,然后通过一系列的增量序列来逐步缩小距离,每一次增量间隔内执行插入排序。以下是一个简单的希尔排序示例:
```cpp
#include <iostream>
#include <vector>
// 希尔排序函数
void shellSort(std::vector<int>& arr, int gap = 1) {
for (gap > 0; gap > 0; gap /= 2) {
for (int i = gap; i < arr.size(); ++i) {
int temp = arr[i];
int j;
for (j = i; j >= gap && arr[j - gap] > temp; j -= gap)
arr[j] = arr[j - gap];
arr[j] = temp;
}
}
}
// 测试并打印排序结果
void printArray(const std::vector<int>& arr) {
for (int i : arr)
std::cout << i << " ";
std::cout << "\n";
}
int main() {
std::vector<int> data = {9, 7, 5, 11, 12, 2, 14, 3};
std::cout << "Original array: ";
printArray(data);
shellSort(data);
std::cout << "After Shell Sort: ";
printArray(data);
return 0;
}
```
在这个例子中,我们首先创建了一个包含一些随机值的向量`data`,然后调用`shellSort`对其进行排序,最后打印出排序前后的结果。
阅读全文