用C++代码举例对一组数据进行折中法排序
时间: 2024-09-15 19:08:52 浏览: 42
归并排序 分治法——C++代码
折中法,也称为“希尔排序”(Shell Sort),是一种插入排序的改进版本,通过将数组分割成若干个子序列并对每个子序列进行插入排序,随着步长逐渐减小,最后整个序列变为有序。下面是一个简单的C++代码示例,展示了如何使用折中排序算法:
```cpp
#include <iostream>
void shellSort(int arr[], int n) {
// 初始步长
int gap = n / 2;
while (gap > 0) {
for (int i = gap; i < n; ++i) {
int temp = arr[i];
// 将元素向右移动到其最终位置
for (int j = i; j >= gap && arr[j - gap] > temp; j -= gap)
arr[j] = arr[j - gap];
arr[j] = temp; // 插入元素到正确位置
}
gap /= 2; // 减少步长
}
}
// 打印数组
void printArray(int arr[], int size) {
for (int i = 0; i < size; ++i)
std::cout << arr[i] << " ";
std::cout << "\n";
}
int main() {
int data[] = {9, 7, 5, 11, 12, 2, 14, 3};
int n = sizeof(data) / sizeof(data[0]);
std::cout << "Original array: \n";
printArray(data, n);
shellSort(data, n);
std::cout << "Sorted array: \n";
printArray(data, n);
return 0;
}
```
在这个例子中,我们首先定义了一个`shellSort`函数,它接受一个整数数组和它的大小作为输入。函数内部包含两个嵌套循环,外部循环控制步长逐渐减小,内部循环则是实际的插入过程。然后,在`main`函数中,我们创建了一个测试数组,并调用`shellSort`对其进行排序。
阅读全文