c++sort和数组同时大到小和小到大
时间: 2024-02-11 09:08:04 浏览: 71
c++中的sort函数可以通过传递自定义的比较函数来实现数组的升序排列和降序排列。下面是一个示例代码,可以将数组同时按照从小到大和从大到小排序:
```cpp
#include <iostream>
#include <algorithm>
using namespace std;
bool cmp(int a, int b) {
// 比较函数,实现从大到小排序
return a > b;
}
int main() {
int a[] = {5, 2, 8, 4, 1};
int n = sizeof(a) / sizeof(a[0]);
// 从小到大排序
sort(a, a + n);
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
cout << endl;
// 从大到小排序
sort(a, a + n, cmp);
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
cout << endl;
return 0;
}
```
在上面的代码中,sort函数第三个参数为自定义的比较函数cmp,实现从大到小排序。如果不传递第三个参数,则默认从小到大排序。
相关问题
字符串数组从大到小排序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++源码
在C++中,模板允许你编写与数据类型无关的代码,这意味着你可以创建一个通用的排序算法,它可以对任何类型的数组进行排序。以下是一个使用模板的数组大小排序的简单示例,该示例使用了C++标准库中的`std::sort`函数,这个函数需要包含头文件`<algorithm>`。
```cpp
#include <iostream>
#include <algorithm> // for std::sort
// 模板函数,用于排序任何类型的数组
template <typename T>
void sortArray(T arr[], int size) {
std::sort(arr, arr + size);
}
int main() {
// 整型数组示例
int intArray[] = {5, 3, 2, 8, 6};
int intArraySize = sizeof(intArray) / sizeof(intArray[0]);
// 调用模板函数对整型数组进行排序
sortArray(intArray, intArraySize);
// 打印排序后的整型数组
for(int i = 0; i < intArraySize; ++i) {
std::cout << intArray[i] << " ";
}
std::cout << std::endl;
// 字符数组示例
char charArray[] = {'b', 'a', 'c', 'd'};
int charArraySize = sizeof(charArray) / sizeof(charArray[0]);
// 调用模板函数对字符数组进行排序
sortArray(charArray, charArraySize);
// 打印排序后的字符数组
for(int i = 0; i < charArraySize; ++i) {
std::cout << charArray[i] << " ";
}
std::cout << std::endl;
return 0;
}
```
这段代码定义了一个`sortArray`模板函数,它接受一个数组和数组的大小作为参数,并使用`std::sort`对数组进行排序。`main`函数中展示了如何使用`sortArray`函数来排序一个整型数组和一个字符数组。`std::sort`是C++标准模板库中的一个泛型排序算法,它可以通过重载操作符`<`或`>`来比较元素,或者通过提供一个比较函数来实现自定义的排序逻辑。
阅读全文
相关推荐
















