/*
本文为 C qsort 函数 in <stdlib.h>
和 C++ sort 函数 in <algorithm> 区别
*/
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
using namespace std;
// 所有 cmp 函数都是对 < 小于运算的更改
// 排序函数默认都是 从小到大 排序
// cmp 的返回值决定其参数 a, b 的顺序
// C++ sort 函数的 cmp
bool cmp_cpp(int a, int b){
// 函数当 a < b 时返回 1,即排序的最终顺序为 a 在 b 之前
// 可按冒泡排序理解,最终的相邻元素总是满足 cmp 返回值为 真 的情况
// return a < b;
// 函数当 a > b 时返回 1,即排序的最终顺序 b 在 a 之间
return a > b;
}
// C qsort 函数的 cmp
int cmp_c(const void *a, const void *b){
int *_a = (int*)a; // 先将a, b 转化为目的数据结构
int *_b = (int*)b;
return (*_a) - (*_b); // 注意为 - 号,非 比较 符号,因为返回值为整形
// 和 strcmp 的返回相似, a < b 返回 -1, = <-> 0, > <-> 1
// 默认按从小到大排,即返回值反映的是 a < b 的结果
}
int main(){
// C++
int arr[] = {2, 1, 3, 4};
sort(arr, arr+4, cmp_cpp); // 初始位置、终止位置、cmp函数
cout << "C++:";
for(int i = 0; i < 4; i++){
cout << arr[i] << ' ';
}
cout << endl;
qsort(arr, 4, sizeof(arr[0]), cmp_c); // 初始位置、长度、数据型大小,cmp函数
cout << "C :";
for(int i = 0; i < 4; i++){
cout << arr[i] << ' ';
}
cout << endl;
return 0;
}
【 排序函数 】C/C++排序函数qsort/sort使用区别
猜你喜欢
转载自blog.csdn.net/qq_40491305/article/details/104493059
今日推荐
周排行