C++ 编写一个将数组按降序排序的程序
将数组按降序排序是使用C ++编程语言可以以多种方式完成的常见任务。本教程将讨论两种按降序排序数组的方法。
1. 方法1
#include
#include
using namespace std;
const int ARRAY_SIZE = 10;
int main() {
// Create an array of integers
int arr[ARRAY_SIZE] = {3, 7, 1, 5, 2, 8, 4, 6, 9, 0};
// Print the unsorted array
cout << "Original array: ";
for (int i = 0; i < ARRAY_SIZE; i++) {
cout << arr[i] << " ";
}
cout << endl;
// Sort the array in descending order
sort(arr, arr + ARRAY_SIZE, greater());
// Print the sorted array
cout << "Sorted array: ";
for (int i = 0; i < ARRAY_SIZE; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
输出:
解释:
这个程序创建了一个包含10个整数的数组,并使用C++标准模板库(STL)中的排序函数将数组按降序排序。排序函数有三个参数:第一和第二个参数指定要排序的元素范围,第三个参数是一个比较函数,确定元素排序的顺序。在这种情况下,我们使用greater比较函数,它比较两个整数并返回true,如果第一个整数大于第二个整数。
2. 方法2
选择排序是一种原地排序算法,通过迭代选择下一个最小元素并将其与当前元素交换,直到数组排序完成。虽然它在时间复杂度方面不是最高效的排序算法,但实现简单,并且适用于对小数组进行排序或作为学习练习。
这是C++选择排序函数的一般结构:
void selectionSort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
// Find the minimum element in the unsorted portion of the array
int minIndex = i;
for (int j = i + 1; j < n; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
// Swap the minimum element with the current element
int temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
为了将数组按降序排列,我们可以将if语句中的比较运算符从<反转为>。这将导致选择排序函数在每次迭代时选择数组未排序部分中的最大元素,而不是最小元素。
以下是用于按降序排列数组的修改后的选择排序函数:
void selectionSortDescending(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
// Find the maximum element in the unsorted portion of the array
int maxIndex = i;
for (int j = i + 1; j < n; j++) {
if (arr[j] > arr[maxIndex]) {
maxIndex = j;
}
}
// Swap the maximum element with the current element
int temp = arr[i];
arr[i] = arr[maxIndex];
arr[maxIndex] = temp;
}
}
为了测试我们的排序函数,我们可以创建一个简单的程序,生成一个随机整数的数组,将其打印到控制台,使用selectionSortDescending函数按降序对其进行排序,然后将排序后的数组打印到控制台。
下面是一个示例程序,演示如何使用selectionSortDescending函数按降序对数组进行排序:
#include
#include
#include
using namespace std;
const int ARRAY_SIZE = 10;
// Function prototype for the selection sort function
void selectionSortDescending(int arr[], int n);
int main() {
// Seed the random number generator
srand(time(0));
// Create an array of random integers
int arr[ARRAY_SIZE];
for (int i = 0; i < ARRAY_SIZE; i++) {
arr[i] = rand() % 100;
}
// Print the unsorted array
cout << "Original array: ";
for (int i = 0; i < ARRAY_SIZE; i++) {
cout << arr[i] << " ";
}
cout< arr[maxIndex]) {
maxIndex = j;
}
}
// Swap the maximum element with the current element
int temp = arr[i];
arr[i] = arr[maxIndex];
arr[maxIndex] = temp;
}
}
输出:
说明:
这个程序会生成一个包含 10 个随机整数的数组,将其打印到控制台,使用 selectionSortDescending 函数按降序对其进行排序,然后再将排序后的数组打印到控制台。