php 字符串 字典序序排序,C++ 怎么实现字典序排序法,自然排序
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++ 怎么实现字典序排序法,自然排序相关推荐
- JAva中的自然排序是什么意思_Java中的自然排序顺序字符串比较 – 是内置的吗?...
参见英文答案 > Sort on a string that may contain a number 19个 我想要一些保 ...
- mysql 自然排序_如何在mysql中实现自然排序
背景 熟悉mysql的同学应该清楚,mysql在对字符串做order by排序时是按照字典序进行排序的,但是如果字符串中包含数字的话(我们称这种类型的字符串为alphanumeric),仅按照字典序的 ...
- [转载] 比较器(Comparable和Comparator)、自然排序、定制排序
参考链接: Java比较器接口与示例 写在前面: 我是「扬帆向海」,这个昵称来源于我的名字以及女朋友的名字.我热爱技术.热爱开源.热爱编程.技术是开源的.知识是共享的. 这博客是对自己学习的一点点总结 ...
- Python按元组中第一个字符串升序第二个字符串降序排序
问题描述:假设有一个列表,里面包含若干元组,每个元组中有两个字符串,现在要求对列表中的元组进行排序,排序规则为:第一个字符串升序,如果第一个字符串相同则按第二个字符串降序. 参考代码: 运行结果: - ...
- python字符串逆序_python之字符串逆序
python之字符串逆序 1.贴题 题目来自PythonTip 给你一个字符串 a, 请你输出逆序之后的a. 例如:a='xydz' 则输出:zdyx 2.说明 思路基本分为两种, 一是编写循环,每次 ...
- python字符串逆序输出代码_一行代码实现字符串逆序输出
字符串逆序实现三部曲: 1.将字符串转为数组,一个字符为数组的一个元素: 2.将数组倒置: 3.再将数组元素拼接为字符串. 方法一: var str = "naYgniYgnehZ" ...
- DSt:数据结构的最强学习路线之数据结构知识讲解与刷题平台、刷题集合、问题为导向的十大类刷题算法(数组和字符串、栈和队列、二叉树、堆实现、图、哈希表、排序和搜索、动态规划/回溯法/递归/贪心/分治)总
DSt:数据结构的最强学习路线之数据结构知识讲解与刷题平台.刷题集合.问题为导向的十大类刷题算法(数组和字符串.栈和队列.二叉树.堆实现.图.哈希表.排序和搜索.动态规划/回溯法/递归/贪心/分治)总 ...
- C语言/关于字符串逆序存储
关于字符串逆序存储问题,本文主要介绍了两种方法:1.递归 2.非递归 递归: 先利用my_strlen()函数求出所求字符串长度,字符串长度保存在变量len中(不含字符串'\0')(也可以直接使用库函 ...
- python将字符串逆序_为什么说Python是一门伟大的入门语言?(附免费教程)
Python 是一门伟大的入门语言.作为一门伟大的编程语言,一定要具备一些特征,其中有五项特征是非常重要的: 非常棒的首次体验:就像书的开始,首先一定要能够"沉迷",学习新知识一定 ...
最新文章
- 认识一下Kotlin语言,Android平台的Swift
- leetCode-删除排序数组中的重复项
- MySQL对in里面数据进行指定排序:order by field
- 端口聚合Port-Channel
- 直方图均衡 视觉显著_计算机视觉一些项目实战技术(续)
- 凸包问题(包含蛮力算法和快速凸包算法)+最优二叉查找树详解
- 使用PowerDesigner设计数据库保姆级教程
- 分析了633个中国城市之后,我们发现五分之二都在流失人口...(附统计图)
- 傻,是不值得同情和原谅的事情
- 【SDCC 2016现场】数据库/大数据技术实战专场实录(下)
- cocos2d-x 多点触控总结
- 高斯滤波及高斯卷积核C++实现
- 创建一个图文并茂的调查
- AutoCAD帮助文档下载
- hadoop2.7.4在windows系统IDEA远程测试
- 如何转换.CR2格式的图片
- 软件测试实验——编写测试用例
- 计算机考研三百多分很难吗,考研考300分很难吗?
- 51分布式电商项目 - Linux下安装ActiveMQ
- 【总结】Vue+arcgis
热门文章
- 通过Spring Boot了解H2 InMemory数据库
- 截至频率_截至2013年核心Java帖子
- java 内联调用深度_Java中内联虚拟方法调用的性能
- 垃圾收集算法,垃圾收集器_为什么我不能关闭垃圾收集器?
- 使用Spring Security和jdbc的Spring Boot第2部分
- jpa jdbc jndi_没有J2EE容器的JNDI和JPA
- 在哪里可以运行EJB?
- 微抖动,繁忙的等待和绑定CPU
- Java 8:CompletableFuture的权威指南
- Java 8:正在运行的CompletableFuture