本题要求实现一个用选择法对整数数组进行简单排序的函数。 函数接口定义: void sort( int a[], int n ); 其中a是待排序的数组,n是数组a中元素的个数。该函数用选择法将数组a中的元素按升序排列,结果仍然在数组a中。
时间: 2024-11-25 21:08:35 浏览: 13
选择排序是一种简单的直观排序算法,它的工作原理是在未排序序列中找到最小(或最大)元素,存放在序列的起始位置,然后再从剩余未排序元素中继续寻找最小(或最大)元素,直到所有元素均排序完毕。以下是使用选择法对整数数组进行简单排序的函数实现:
```c++
#include <iostream>
// 函数用于找到数组中的最小元素的索引
int findMinIndex(int a[], int n) {
int min_index = 0;
for (int i = 1; i < n; i++) {
if (a[i] < a[min_index]) {
min_index = i;
}
}
return min_index;
}
// 主要的排序函数
void selectionSort(int a[], int n) {
// 遍历整个数组
for (int i = 0; i < n - 1; i++) {
// 找到未排序部分的最小元素并交换到当前位置
int min_idx = findMinIndex(&a[i], n - i - 1);
std::swap(a[i], a[min_idx + i]);
}
}
// 测试函数
void printArray(int a[], int n) {
for (int i = 0; i < n; i++) {
std::cout << a[i] << " ";
}
std::cout << "\n";
}
int main() {
int arr[] = {5, 2, 8, 1, 9};
int n = sizeof(arr) / sizeof(arr[0]);
std::cout << "Original array: ";
printArray(arr, n);
selectionSort(arr, n);
std::cout << "Sorted array: ";
printArray(arr, n);
return 0;
}
```
这个程序首先定义了一个`findMinIndex`辅助函数,然后在`selectionSort`函数中通过两层循环,外层遍历每个未排序的部分,内层找到这部分的最小值并将其放到合适的位置。最后,在`main`函数中测试了排序过程。
阅读全文