对于给定的含有n个元素的数组a,使用递归算法采用直接插入排序法使得元素值递增排序,编写完整的实验程序,并采用相应数据进行测试。用C++
时间: 2024-10-21 08:14:22 浏览: 28
直接插入排序是一种简单的排序算法,它通过将每个元素逐个插入到已排序的部分,形成有序序列。下面是使用递归实现直接插入排序的C++代码示例:
```cpp
#include <iostream>
using namespace std;
// 递归插入排序函数
void insertSort(int arr[], int n) {
// 基本情况:如果数组只有一个元素或为空,则已经是排序好的
if (n <= 1)
return;
// 选择最后一个元素作为基准
int key = arr[n - 1];
// 将关键元素依次与前一个元素比较并插入适当位置
int j = n - 2;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key; // 插入关键元素
}
// 测试函数
int main() {
int a[] = {9, 5, 7, 3, 6, 8, 1, 4, 2};
int n = sizeof(a) / sizeof(a[0]);
cout << "Original array: ";
for (int i = 0; i < n; ++i)
cout << a[i] << " ";
insertSort(a, n);
cout << "\nSorted array using insertion sort: ";
for (int i = 0; i < n; ++i)
cout << a[i] << " ";
return 0;
}
```
在这个例子中,`insertSort` 函数接收一个整数数组和它的大小作为参数。当数组只有一个元素或为空时,函数停止递归,然后开始从数组末尾向前遍历,将当前元素插入到已排序部分的正确位置。
你可以运行这个程序,看看对于给定的数据如 `{9, 5, 7, 3, 6, 8, 1, 4, 2}`,排序后的结果会是什么。记得每次改变 `a` 数组的内容来验证不同输入的情况。
阅读全文