c++把数组从大到小排序
时间: 2024-09-30 18:06:20 浏览: 19
在C++中,将数组元素从大到小排序可以使用多种算法,其中最常见的是使用标准库函数`sort()`配合自定义比较函数,或者直接使用选择排序、冒泡排序等简单的遍历方法。这里以快速排序为例,因为它的平均时间复杂度较低,适用于大规模数据。
使用C++标准库中的`std::sort()`函数:
```cpp
#include <algorithm>
#include <iostream>
// 自定义降序比较函数
bool compare(int a, int b) {
return a > b;
}
int main() {
int arr[] = {5, 9, 1, 7, 3};
int n = sizeof(arr) / sizeof(arr[0]);
std::sort(arr, arr + n, compare);
// 输出排序后的数组
for (int i = 0; i < n; ++i)
std::cout << arr[i] << " ";
std::cout << "\n";
return 0;
}
```
在这个例子中,我们传递了一个比较函数给`sort()`,使得元素按降序排列。
如果你不想依赖标准库,也可以选择手动实现遍历排序算法,如冒泡排序或插入排序,只需调整相应的比较条件即可。
相关问题
字符串数组从大到小排序c++
在 C++ 中,如果你想对字符串数组按照字典序(即从大到小)进行排序,可以使用 `std::sort` 函数结合自定义比较函数。以下是基本步骤:
1. 首先,包含必要的头文件:
```cpp
#include <algorithm>
#include <string>
```
2. 定义一个比较函数,比如 `compareStringsDesc`,它接受两个字符串并返回负数、零或正数表示第一个字符串应该排在第二个之后、相等或在前面:
```cpp
bool compareStringsDesc(const std::string& a, const std::string& b) {
return a > b;
}
```
或者如果你想要忽略大小写排序,可以这样做:
```cpp
bool compareStringsDescCaseInsensitive(const std::string& a, const std::string& b) {
return tolower(a) > tolower(b);
}
```
3. 使用 `std::sort` 函数,并将这个比较函数作为第三个参数传递,这样数组就会按降序排列:
```cpp
void sortStringArrayDesc(std::string arr[], int n) {
std::sort(arr, arr + n, compareStringsDesc);
}
```
4. 调用这个函数传入你的字符串数组和数组长度即可。
注意:`sort`函数会直接修改原数组,如果不想改变原数组,可以在排序前复制一份再操作。
函数模版将数组从大到小排序
以下是一个使用函数模板将数组从大到小排序的示例代码:
```c++
#include <iostream>
using namespace std;
// 函数模板
template <typename T>
void bubbleSort(T arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] < arr[j+1]) {
// 交换 arr[j] 和 arr[j+1]
T temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
int main() {
int arr[] = {5, 3, 8, 1, 2, 9};
int n = sizeof(arr) / sizeof(arr[0]);
bubbleSort(arr, n);
cout << "排序后的数组:";
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
在这个示例中,我们使用了函数模板 `bubbleSort` 来对任意类型的数组进行排序。该函数使用冒泡排序算法来将数组从大到小排序。在 `main` 函数中,我们声明了一个整数数组 `arr`,并使用 `sizeof` 运算符计算出数组元素的个数 `n`。然后,我们调用 `bubbleSort` 函数来对数组进行排序,并输出排序后的结果。
注意,在使用函数模板时,需要在函数名后面加上尖括号 `<typename T>`,其中 `T` 是一个占位符,表示任意类型。在函数体中,我们可以使用 `T` 来代表数组元素的类型。