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排序相关推荐

  1. C++ 排序函数 sort(),qsort()的用法

    想起来自己天天排序排序,冒泡啊,二分查找啊,结果在STL中就自带了排序函数sort,qsort,总算把自己解脱了~ 所以自己总结了一下,首先看sort函数见下表: 函数名 功能描述 sort 对给定区 ...

  2. Bailian3719 学生信息用qsort排序【排序+字符串库函数】

    3719:学生信息用qsort排序 总时间限制: 1000ms 内存限制: 65536kB 描述 将输入的学生信息按名字排序后输出. 输入 每个学生信息是两行,第一行是名字,由英文字母和空格构成,最长 ...

  3. sort函数排序字母c语言,c语言数组用sort函数排序?

    c语言运用sort 排序函数,需要的头文件是什么? sort不属于C语言的标准函数,所以也没有相应的头文件,但是可以自定义. sort 函数为将整型数组从小到大排序. voidsort(int*a,i ...

  4. redis 的使用 (sort set排序集合类型操作)

    sort set排序集合类型 释义: sort set 是 string 类型的集合 sort set 的每个元素 都会关联一个 权 通过 权值 可以有序的获取集合中的元素 应用场合: 获取热门帖子( ...

  5. Shell Sort 希尔排序 收藏

    Shell Sort 希尔排序 收藏 希尔排序(Shell Sort)又叫做缩小增量排序(diminishing increment sort),是一种很优秀的排序法,算法本身不难理解,也很容易实现, ...

  6. [Java基础] sort方法--------排序的那些事

    引言 在学习Java过程中,排序sort是我们常用的功能:在Java里,数组有Arrays.sort()可以排序,集合则是Collections.sort()方法排序:默认情况下是升序排列,但是降序又 ...

  7. 关于SAP的“Sort key 排序码”

    对一个SAP新手来说,科目主档.客户主档.供应商主档中都有一个排序码栏位是比较不好理解的,下面我用图片来简单说明一下Sort key 排序码 的用途. 排序码的作用是凭证在生成时自动指定"分 ...

  8. 倒序排序_排序算法(六):Counting Sort 计数排序

    之前文章介绍的一些排序算法都是基于比较来进行排序的,故它们在平均情况下的时间复杂度最好也不过是线性对数级别.这里我们来介绍一种简单的基于非比较的排序算法--Counting Sort 计数排序,其时间 ...

  9. C语言最简单的sleep sort睡眠排序实现(附完整源码)

    C语言最简单的sleep sort睡眠排序实现 C语言最简单的sleep sort睡眠排序实现完整源码(定义,实现,main函数测试) C语言最简单的sleep sort睡眠排序实现完整源码(定义,实 ...

  10. C语言Selection Sort选择排序的算法(附完整源码)

    C语言Selection Sort选择排序的算法 C语言Selection Sort选择排序的算法完整源码(定义,实现) C语言Selection Sort选择排序的算法完整源码(定义,实现) #if ...

最新文章

  1. 有没有一只蜻蜓永远为你守候?
  2. CIC滤波器的Matlab仿真与FPGA实现
  3. Windows驱动开发 - 设备对象初步学习
  4. Topo系统的益处和帮助
  5. 无符号数的算术四则运算中的各类单词的识别_文本反垃圾在花椒直播中的应用概述...
  6. 受教黑金文档,再度优化兼容irq uart代码
  7. jenkins 部署文档
  8. linux免密登录_Linux SSH免密钥登录总结
  9. 合并数据 - 合并多个Excel文件并转成CSV - Python代码
  10. 当代年轻人的“快乐秘籍”—— Z时代营销攻略
  11. 安装wordpress之激活mod_rewrite
  12. java基础知识点(2)—— 环境变量的配置
  13. PHP教程 数据库和MySQL_PHP教程 - MySQL 创建数据库和表
  14. MVC应用程序的jQuery代码重构
  15. c++输出的值精确到小数点后5位_c/c++linux 2019最新阿里研发类面试题及答案分享...
  16. 求解线性方程组(SVD,QR,Gauss,LU)
  17. python 逆序_python编程题-句子的逆序
  18. SharePoint 2013 Preview Single Server 评估环境安装与简单试用
  19. fpga电平约束有什么作用_FPGA开发全攻略——时序约束
  20. JavaSE JDK搭建

热门文章

  1. windows下封一些危险的端口
  2. 别人认为可不可能一点都不重要
  3. 计算机专业教学实施,中职计算机专业教学项目的设计与实施
  4. springboot2 - 坑 - 解决put提交接收不到参数的问题
  5. 如何解决System.Web.HttpRequestValidationException的异常
  6. JAVA分布式架构的演变及解决方案
  7. 对于未来chrome80 samesite问题的兼容解决方案
  8. 使用pandas循环数据帧的最有效方法是什么? [重复]
  9. QObject::startTimer: Timers cannot be started from another thread [使用自定义信号与曹函数来解决在子线程中不能调用QTimer定时器]
  10. ros中订阅/map话题,获取地图尺寸,获取机器人原点origin,获取地图分辨率resolution (c++,python,waitForMessage,wait_for_message)