C++ 如何实现字典序排序法,自然排序

类似PHP的natcasesort函数,整了一天没有头绪.

数组是vector

排序前:

[0] => IMG0.png

[1] => IMG3.png

[2] => img1.png

[3] => img10.png

[4] => img12.png

[5] => img2.png

排序后:

[0] => IMG0.png

[1] => img1.png

[2] => img2.png

[3] => IMG3.png

[4] => img10.png

[5] => img12.png

------解决方案--------------------

其实楼主的意思就是按数字大小排序呗? 预处理的时候把数值部分摘出来作为排序的key。

------解决方案--------------------

定位到数字部分,读取数字再比较?

bool compare(const string& name1, const string& name2)

{

int num1, num2;

sscanf(name1.c_str()+3, "%d", &num1);

sscanf(name2.c_str()+3, "%d", &num2);

return num1

}

------解决方案--------------------

sort(vector.begin(),vector.end(),[](const string&a,const string&b){return a[3]<b[3];});泛型算法和lambda

------解决方案--------------------

直接添加到容器,自动排序

------解决方案--------------------

引用:Quote: 引用:定位到数字部分,读取数字再比较?

bool compare(const string& name1, const string& name2)

{

int num1, num2;

sscanf(name1.c_str()+3, "%d", &num1);

sscanf(name2.c_str()+3, "%d", &num2);

return num1

}

这样就有点局域性了,不能确定后面一定是数字

那你倒是说说具体的规则啊,对于你举的例子,以上那个比较规则应该是够了

------解决方案--------------------

std::sort(files.begin(),files.end(), [](const std::string& a, const std::string& b)

{

return a.substr(3,std::string::npos)

});

------解决方案--------------------

简单的写了下 用的是qsort

#include

#include

#include

char data[6][10]={{"img0"},

{"img3"},

{"img1"},

{"img10"},

{"img12"},

{"img2"}};

int cmp(const void *a, const void *b)

{

char *temp_a = (char *)a;

char *temp_b = (char *)b;

// 如果两个字符串的长度不相等那么就把少的放前面

if(strlen(temp_a)!= strlen(temp_b))

return strlen(temp_a)-strlen(temp_b);

// 两字符串相等,就升序

for(int i=0; i

{

if(temp_a[i]!=temp_b[i])

return temp_a[i]-temp_b[i];

}

}

int main()

{

printf("排序前:\n");

for(int i=0; i

printf("%s\n", data[i]);

qsort(data, 6, 10*sizeof(char), cmp);

printf("排序后:\n");

for(int i=0; i

printf("%s\n", data[i]);

return 0;

}

------解决方案--------------------

------解决方案--------------------

php 字符串 字典序序排序,C++ 怎么实现字典序排序法,自然排序相关推荐

  1. JAva中的自然排序是什么意思_Java中的自然排序顺序字符串比较 – 是内置的吗?...

    参见英文答案 > Sort on a string that may contain a number                                    19个 我想要一些保 ...

  2. mysql 自然排序_如何在mysql中实现自然排序

    背景 熟悉mysql的同学应该清楚,mysql在对字符串做order by排序时是按照字典序进行排序的,但是如果字符串中包含数字的话(我们称这种类型的字符串为alphanumeric),仅按照字典序的 ...

  3. [转载] 比较器(Comparable和Comparator)、自然排序、定制排序

    参考链接: Java比较器接口与示例 写在前面: 我是「扬帆向海」,这个昵称来源于我的名字以及女朋友的名字.我热爱技术.热爱开源.热爱编程.技术是开源的.知识是共享的. 这博客是对自己学习的一点点总结 ...

  4. Python按元组中第一个字符串升序第二个字符串降序排序

    问题描述:假设有一个列表,里面包含若干元组,每个元组中有两个字符串,现在要求对列表中的元组进行排序,排序规则为:第一个字符串升序,如果第一个字符串相同则按第二个字符串降序. 参考代码: 运行结果: - ...

  5. python字符串逆序_python之字符串逆序

    python之字符串逆序 1.贴题 题目来自PythonTip 给你一个字符串 a, 请你输出逆序之后的a. 例如:a='xydz' 则输出:zdyx 2.说明 思路基本分为两种, 一是编写循环,每次 ...

  6. python字符串逆序输出代码_一行代码实现字符串逆序输出

    字符串逆序实现三部曲: 1.将字符串转为数组,一个字符为数组的一个元素: 2.将数组倒置: 3.再将数组元素拼接为字符串. 方法一: var str = "naYgniYgnehZ" ...

  7. DSt:数据结构的最强学习路线之数据结构知识讲解与刷题平台、刷题集合、问题为导向的十大类刷题算法(数组和字符串、栈和队列、二叉树、堆实现、图、哈希表、排序和搜索、动态规划/回溯法/递归/贪心/分治)总

    DSt:数据结构的最强学习路线之数据结构知识讲解与刷题平台.刷题集合.问题为导向的十大类刷题算法(数组和字符串.栈和队列.二叉树.堆实现.图.哈希表.排序和搜索.动态规划/回溯法/递归/贪心/分治)总 ...

  8. C语言/关于字符串逆序存储

    关于字符串逆序存储问题,本文主要介绍了两种方法:1.递归 2.非递归 递归: 先利用my_strlen()函数求出所求字符串长度,字符串长度保存在变量len中(不含字符串'\0')(也可以直接使用库函 ...

  9. python将字符串逆序_为什么说Python是一门伟大的入门语言?(附免费教程)

    Python 是一门伟大的入门语言.作为一门伟大的编程语言,一定要具备一些特征,其中有五项特征是非常重要的: 非常棒的首次体验:就像书的开始,首先一定要能够"沉迷",学习新知识一定 ...

最新文章

  1. 认识一下Kotlin语言,Android平台的Swift
  2. leetCode-删除排序数组中的重复项
  3. MySQL对in里面数据进行指定排序:order by field
  4. 端口聚合Port-Channel
  5. 直方图均衡 视觉显著_计算机视觉一些项目实战技术(续)
  6. 凸包问题(包含蛮力算法和快速凸包算法)+最优二叉查找树详解
  7. 使用PowerDesigner设计数据库保姆级教程
  8. 分析了633个中国城市之后,我们发现五分之二都在流失人口...(附统计图)
  9. 傻,是不值得同情和原谅的事情
  10. 【SDCC 2016现场】数据库/大数据技术实战专场实录(下)
  11. cocos2d-x 多点触控总结
  12. 高斯滤波及高斯卷积核C++实现
  13. 创建一个图文并茂的调查
  14. AutoCAD帮助文档下载
  15. hadoop2.7.4在windows系统IDEA远程测试
  16. 如何转换.CR2格式的图片
  17. 软件测试实验——编写测试用例
  18. 计算机考研三百多分很难吗,考研考300分很难吗?
  19. 51分布式电商项目 - Linux下安装ActiveMQ
  20. 【总结】Vue+arcgis

热门文章

  1. 通过Spring Boot了解H2 InMemory数据库
  2. 截至频率_截至2013年核心Java帖子
  3. java 内联调用深度_Java中内联虚拟方法调用的性能
  4. 垃圾收集算法,垃圾收集器_为什么我不能关闭垃圾收集器?
  5. 使用Spring Security和jdbc的Spring Boot第2部分
  6. jpa jdbc jndi_没有J2EE容器的JNDI和JPA
  7. 在哪里可以运行EJB?
  8. 微抖动,繁忙的等待和绑定CPU
  9. Java 8:CompletableFuture的权威指南
  10. Java 8:正在运行的CompletableFuture