博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sort、qsort排序
阅读量:6578 次
发布时间:2019-06-24

本文共 2795 字,大约阅读时间需要 9 分钟。

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 
#include
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 
#include
/*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 
#include
#include
#include
#include
#include
using namespace std;typedef pair
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
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
::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

你可能感兴趣的文章
[转]100个常用的linux命令
查看>>
cocos creator destroy方法
查看>>
第二课 HTML+CSS
查看>>
time random sys os模块
查看>>
第一章 台达组态软件的基本介绍
查看>>
DOM_04之常用对象及BOM
查看>>
LOJ#2085 循环之美
查看>>
Leetcode | Longest Common Prefix
查看>>
Filter实现用户自动登录
查看>>
第十九天笔记
查看>>
发送json给服务器
查看>>
日历控件datetimepicker(IE11)
查看>>
RH253读书笔记(5)-Lab 5 Network File Sharing Services
查看>>
CCNP路由实验(4) -- BGP
查看>>
图像卷积与滤波的一些知识点
查看>>
关于 tchart 控件的相关内容
查看>>
(转)新的挑战:敏捷开发与优秀的程序员
查看>>
JS xpath
查看>>
关于 spring MVC 配置自动扫描中 use-default-filters 属性
查看>>
LIUNX 安装 nginx
查看>>