sort、qsort排序
1:qsort和sort只能对连续内存的数据进行排序,像链表map这样的结构是无法排序
2:qsort 示例
/* void qsort(void*base, // 待排序数组首地址
* size_t num, // 数组中待排序元素数量
* size_t width, // 各元素的占用空间大小
* int(__cdecl*compare)(const void*,* const void*)); // 指向函数的指针 (函数内 写明比较规则)
*/
int qsortcmp(const void *p1, const void *p2) {/* p2 > p1,return true.升序 *//* p2 < p1,return true.逆序 */if (strcmp((char*) p1, (char*) p2) > 0) {return 1; // 返回真时,交互位置 }return 0; }int main(int argc, char* argv[]) {fprintf(stdout, "start qsort(str1, 5, sizeof(str1[0]), qsortcmp)\n");char str1[5][128]={"003","002","005","004","006"};qsort(str1, 5, sizeof(str1[0]), qsortcmp);int iCnt = 0;for (iCnt = 0; iCnt < 5; ++iCnt) {fprintf(stdout, "str1[%d] is %s\n", iCnt, str1[iCnt]);}return 0; }
3:sort示例
sort默认升序排列
#include <stdio.h> #include <algorithm> int main(int argc, char* argv[]) {/*int 数组排序1*/fprintf(stdout, "start sort(int1, int1 + 5)\n");int int1[5] = { 3, 2, 5, 10, 9 };int jCnt = 0;std::sort(int1, int1 + 5); // 默认升序列排列for (jCnt = 0; jCnt < 5; ++jCnt) {fprintf(stdout, "int1[%d] is %d\n", jCnt, int1[jCnt]);}return 0; }
sort修改比较函数,降序排列
#include <stdio.h> #include <algorithm>/*int 数组排序2*/int sortcmp1(int a, int b) {return a > b; // 降序排列// return a < b; // 升序排列 } int main(int argc, char* argv[]) {fprintf(stdout, "start sort(int1, int1 + 5,sortcmp)\n");int int1[5] = { 3, 2, 5, 10, 9 };int jCnt = 0;std::sort(int1,int1+5,sortcmp1); /*sortcmp 为自己写的回调函数*/for (jCnt = 0; jCnt < 5; ++jCnt) {fprintf(stdout, "int1[%d] is %d\n", jCnt, int1[jCnt]);}return 0; }
4:sort对map排列
/* 将map 按照 vaule 值排序输出 */
/* sort不能 直接对map排序,因此需要将map转换为vector进行排序 */
#include <stdio.h> #include <string> #include <algorithm> #include <map> #include <vector> #include <iostream> using namespace std;typedef pair <string, int> PAIR; bool sortcmp2(const PAIR& lhs, const PAIR& rhs) {return lhs.second < rhs.second; }; int main(int argc, char* argv[]) {/* 将map 按照 vaule 值排序输出 *//* sort不能 直接对map排序,因此需要将map转换为vector进行排序 */fprintf(stdout, "start sort map\n");map<string, int> name_score_map;name_score_map["LiMin"] = 90;name_score_map["ZiLinMi"] = 79;name_score_map["BoB"] = 92;name_score_map.insert(make_pair("Bing", 99));name_score_map.insert(make_pair("Albert", 86));/* 把map中元素转存到vector中 */vector < PAIR > name_score_vec(name_score_map.begin(), name_score_map.end());/* 使用sort 对 vector进行排序 */sort(name_score_vec.begin(), name_score_vec.end(), sortcmp2);/* 显示排序后的结果 */vector<PAIR>::iterator mid = name_score_vec.begin();for (; mid != name_score_vec.end(); ++mid) {cout << mid->first<< " " << mid->second << endl;}return 0; }
转载于:https://www.cnblogs.com/Chris83/p/9528385.html
sort、qsort排序相关推荐
- C++ 排序函数 sort(),qsort()的用法
想起来自己天天排序排序,冒泡啊,二分查找啊,结果在STL中就自带了排序函数sort,qsort,总算把自己解脱了~ 所以自己总结了一下,首先看sort函数见下表: 函数名 功能描述 sort 对给定区 ...
- Bailian3719 学生信息用qsort排序【排序+字符串库函数】
3719:学生信息用qsort排序 总时间限制: 1000ms 内存限制: 65536kB 描述 将输入的学生信息按名字排序后输出. 输入 每个学生信息是两行,第一行是名字,由英文字母和空格构成,最长 ...
- sort函数排序字母c语言,c语言数组用sort函数排序?
c语言运用sort 排序函数,需要的头文件是什么? sort不属于C语言的标准函数,所以也没有相应的头文件,但是可以自定义. sort 函数为将整型数组从小到大排序. voidsort(int*a,i ...
- redis 的使用 (sort set排序集合类型操作)
sort set排序集合类型 释义: sort set 是 string 类型的集合 sort set 的每个元素 都会关联一个 权 通过 权值 可以有序的获取集合中的元素 应用场合: 获取热门帖子( ...
- Shell Sort 希尔排序 收藏
Shell Sort 希尔排序 收藏 希尔排序(Shell Sort)又叫做缩小增量排序(diminishing increment sort),是一种很优秀的排序法,算法本身不难理解,也很容易实现, ...
- [Java基础] sort方法--------排序的那些事
引言 在学习Java过程中,排序sort是我们常用的功能:在Java里,数组有Arrays.sort()可以排序,集合则是Collections.sort()方法排序:默认情况下是升序排列,但是降序又 ...
- 关于SAP的“Sort key 排序码”
对一个SAP新手来说,科目主档.客户主档.供应商主档中都有一个排序码栏位是比较不好理解的,下面我用图片来简单说明一下Sort key 排序码 的用途. 排序码的作用是凭证在生成时自动指定"分 ...
- 倒序排序_排序算法(六):Counting Sort 计数排序
之前文章介绍的一些排序算法都是基于比较来进行排序的,故它们在平均情况下的时间复杂度最好也不过是线性对数级别.这里我们来介绍一种简单的基于非比较的排序算法--Counting Sort 计数排序,其时间 ...
- C语言最简单的sleep sort睡眠排序实现(附完整源码)
C语言最简单的sleep sort睡眠排序实现 C语言最简单的sleep sort睡眠排序实现完整源码(定义,实现,main函数测试) C语言最简单的sleep sort睡眠排序实现完整源码(定义,实 ...
- C语言Selection Sort选择排序的算法(附完整源码)
C语言Selection Sort选择排序的算法 C语言Selection Sort选择排序的算法完整源码(定义,实现) C语言Selection Sort选择排序的算法完整源码(定义,实现) #if ...
最新文章
- 有没有一只蜻蜓永远为你守候?
- CIC滤波器的Matlab仿真与FPGA实现
- Windows驱动开发 - 设备对象初步学习
- Topo系统的益处和帮助
- 无符号数的算术四则运算中的各类单词的识别_文本反垃圾在花椒直播中的应用概述...
- 受教黑金文档,再度优化兼容irq uart代码
- jenkins 部署文档
- linux免密登录_Linux SSH免密钥登录总结
- 合并数据 - 合并多个Excel文件并转成CSV - Python代码
- 当代年轻人的“快乐秘籍”—— Z时代营销攻略
- 安装wordpress之激活mod_rewrite
- java基础知识点(2)—— 环境变量的配置
- PHP教程 数据库和MySQL_PHP教程 - MySQL 创建数据库和表
- MVC应用程序的jQuery代码重构
- c++输出的值精确到小数点后5位_c/c++linux 2019最新阿里研发类面试题及答案分享...
- 求解线性方程组(SVD,QR,Gauss,LU)
- python 逆序_python编程题-句子的逆序
- SharePoint 2013 Preview Single Server 评估环境安装与简单试用
- fpga电平约束有什么作用_FPGA开发全攻略——时序约束
- JavaSE JDK搭建
热门文章
- windows下封一些危险的端口
- 别人认为可不可能一点都不重要
- 计算机专业教学实施,中职计算机专业教学项目的设计与实施
- springboot2 - 坑 - 解决put提交接收不到参数的问题
- 如何解决System.Web.HttpRequestValidationException的异常
- JAVA分布式架构的演变及解决方案
- 对于未来chrome80 samesite问题的兼容解决方案
- 使用pandas循环数据帧的最有效方法是什么? [重复]
- QObject::startTimer: Timers cannot be started from another thread [使用自定义信号与曹函数来解决在子线程中不能调用QTimer定时器]
- ros中订阅/map话题,获取地图尺寸,获取机器人原点origin,获取地图分辨率resolution (c++,python,waitForMessage,wait_for_message)