c++ sort compare
时间: 2023-08-21 17:02:32 浏览: 41
您好!对于比较排序,C语言提供了多种排序算法。其中最常用的是使用标准库函数`qsort`进行比较排序。
`qsort`函数使用自定义的比较函数来比较元素,并根据比较结果对数组进行排序。比较函数应该接受两个指向待比较元素的指针,并返回一个整数值来表示两个元素的大小关系。
下面是一个示例,展示如何使用`qsort`函数进行整数数组的升序排序:
```c
#include <stdio.h>
#include <stdlib.h>
// 比较函数,用于比较两个整数
int compare(const void* a, const void* b) {
int num1 = *(int*)a;
int num2 = *(int*)b;
if (num1 < num2) {
return -1;
} else if (num1 > num2) {
return 1;
} else {
return 0;
}
}
int main() {
int numbers[] = {5, 2, 8, 3, 1};
int size = sizeof(numbers) / sizeof(numbers
相关问题
c++ sort 函数
C++ STL标准库中的sort()函数是一个模板函数,位于头文件<algorithm>中。该函数用于对容器或普通数组中指定范围内的元素进行排序,默认是升序排序。可以选择标准库的其他排序规则,或者自定义排序规则。sort()函数的参数模板是void sort(RandomAccessIterator first, RandomAccessIterator last, Compare comp),其中first表示起始位置(左闭),last表示结束位置(右开),comp表示排序规则(比较器),可以省略,默认是升序。可以通过传入自定义的排序规则来实现不同的排序效果。例如,可以使用sort(a, a+10)来对数组a进行升序排序。也可以使用自定义的升序或降序函数来实现自定义排序规则。在使用自定义排序规则时,需要注意正确使用非静态成员函数,以避免编译错误。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [C++ sort 函数](https://blog.csdn.net/qq_19887221/article/details/124380534)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
c++sort函数
C++中的`sort`函数是一个非常常用的排序函数,可以对数组或容器中的元素进行排序。其函数原型为:
```c++
template<class RandomIt>
void sort(RandomIt first, RandomIt last);
template<class RandomIt, class Compare>
void sort(RandomIt first, RandomIt last, Compare comp);
```
其中第一个函数适用于普通类型的元素,第二个函数适用于自定义类型的元素。
例如对于一个数组进行排序,可以这样写:
```c++
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int arr[] = {5, 3, 1, 4, 2};
int n = sizeof(arr) / sizeof(arr[0]);
sort(arr, arr + n);
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
输出结果为:`1 2 3 4 5`。
对于自定义类型,可以通过重载`operator<`来指定排序规则,例如:
```c++
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
struct Student {
string name;
int score;
bool operator<(const Student& other) const {
return score > other.score; // 按照分数从高到低排序
}
};
int main() {
vector<Student> students = {
{"Tom", 90},
{"Jerry", 80},
{"Alice", 95},
{"Bob", 85}
};
sort(students.begin(), students.end());
for (const auto& student : students) {
cout << student.name << " " << student.score << endl;
}
return 0;
}
```
输出结果为:
```
Alice 95
Tom 90
Bob 85
Jerry 80
```