【算法】C语言使用qsort对字符串字符进行排序(解决字符串长度不统一的问题)

核心思想是

  • 当a的长度>b时,a一定比b大
  • 当a,b长度相等时,通过strcmp比较哪个字典序大,也就是实际的数哪个大
  • 当a的长度<b是,b一定比a大
    这时候就不得不感慨C++的string是多么好用的,哎
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int compare1(const void *a,const void *b){printf("(char*)a:%s\n",(char*) a);			//代表的是实际的数据,如例子中的"123","456","123032"if(strlen((char*)a)>strlen((char*)b))	return 1;else if(strlen((char*)a)==strlen((char*)b))	return strcmp((char*)a,(char*)b);else	return -1;//return strlen((char*)a)>strlen((char*)b)?1:;
}
int main(){char b[][50]={"123","456","123032","1","434"};int num = sizeof(b)/sizeof(b[0]);for(int i=0;i<num;i++){printf("%s ",b[i]);} printf("\n");qsort(b,num,sizeof(b[0]),compare1);for(int i=0;i<num;i++){printf("%s ",b[i]);} printf("\n");
}

运行结果
在这里插入图片描述

而对于leetcode 1985:找出数组中的第 K 大整数,上述写法就不行了,需要使用*(char**)来实现了

int compare(const void*a,const void*b){//printf("*(char**)a:%s\n*(char**)b:%s\n",*(char**) a,*(char**)b);if(strlen(*(char**)a)!=strlen(*(char**)b))   return strlen(*(char**)b)-strlen(*(char**)a);else  return -strcmp(*(char**)a,*(char**)b);
}char* kthLargestNumber(char** nums, int numsSize, int k) {for(int i=0;i<numsSize;i++) printf("%s ",nums[i]);printf("\n");qsort(nums, numsSize, sizeof(char *), compare);for(int i=0;i<numsSize;i++) printf("%s ",nums[i]);return nums[k-1];
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/689794.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

⭐北邮复试刷题LCR 034. 验证外星语词典__哈希思想 (力扣119经典题变种挑战)

LCR 034. 验证外星语词典 某种外星语也使用英文小写字母&#xff0c;但可能顺序 order 不同。字母表的顺序&#xff08;order&#xff09;是一些小写字母的排列。 给定一组用外星语书写的单词 words&#xff0c;以及其字母表的顺序 order&#xff0c;只有当给定的单词在这种外…

软考30-上午题-数据结构-小结

一、杂题汇总 真题1&#xff1a; 有向图——AOV 带权有向图——AOE 真题2&#xff1a; 二叉排序树&#xff1a;左子树< 根节点 < 右子树。 二叉排序树中序遍历&#xff0c;节点关键字有序&#xff08;递增&#xff09;&#xff1b; 关键字初始序列有序&#xff0c;二叉树…

C语言:生成校验码

题目描述 某商品的编号是有11位字符串组成&#xff0c;前10位的每一位都是一个0~9之间的数字&#xff0c;最后一位是一个校验码。校验码为0~10之间的数值&#xff0c;如果等于10&#xff0c;用大写“X”表示。校验规则如下&#xff1a; sum∑(ciwi)&#xff0c;其中ci是字符对…

ubuntu 之 zeitgeist-fts 占用内存

座右铭&#xff1a;怎么简单怎么来&#xff0c;以实现功能为主。 欢迎大家关注公众号与我交流 sudo chmod -x /usr/bin/zeitgeist-daemonsudo chmod -x /usr/bin/zeitgeist-datahublocate zeitgeist-ftssudo chmod -x /usr/lib/x86_64-linux-gnu/zeitgeist-fts # 使用 locate z…

数据可视化利器:五款必备工具推荐

在数据可视化的世界里&#xff0c;工具的选择往往决定了工作的效率和效果。作为一名资深的数据可视化用户&#xff0c;我尝试并使用了众多的数据可视化工具。今天&#xff0c;我想向大家推荐五款我认为最好用、最实用的数据可视化工具。 1. 山海鲸可视化 山海鲸可视化以其强大…

计数排序和归并排序

计数排序 计数排序是一种非比较排序。 原理&#xff1a; 代码&#xff1a; void CountSort(int* nums, int numsSize) {int max nums[0], min nums[0];for (int i 0; i < numsSize; i) {if (nums[i] > max) {max nums[i];}if (nums[i] < min) {min nums[i];}}…

黑马程序员-瑞吉外卖day9

菜品分类下拉列表 CategoryController里面写 /*** 根据条件查询分类数据** param category* return*/GetMapping("/list")ApiOperation("菜品分类目录")public R<List<Category>> list(Category category) {List<Category> list cate…

后端扫盲系列 - vue入门指南

vue特点 组件化&#xff1a;用户界面分解为可重用的组件&#xff0c;这些组件可以使开发的页面更加模块化和可维护双向数据绑定&#xff1a;vue提供了一种轻松绑定数据和DOM元素之间的机制&#xff0c;意味着数据发送变化时&#xff0c;视图会自动更新&#xff0c;反之亦然虚拟…

GptSoVits音频教程

这个号称5秒克隆&#xff0c;或者用1分钟音频训练10分钟就能达到原声效果。 5秒的号称&#xff0c;只要是&#xff0c;什么几秒的&#xff0c;大家可以完全不要想了&#xff0c;什么知更鸟&#xff0c;什么火山&#xff0c;包括本次的GptSoVits的效果肯定是不行的&#xff0c;…

数据结构通讲

目录 集合源码详解 一、常见数据结构讲解 1. 线性数据结构 1.1 数组 1.2 队列 1.3 链表 1.3.1 单向链表 1.3.2 双向链表 1.4 栈 2. 非线性数据结构 2.1 树 2.2 二叉树 2.2.1 概念介绍 2.2.2 遍历操作 2.2.3 删除节点 2.2.4 查找局限性 2.2.5 AVL&#xff08; …

【C深剖】typedef关键字

简介&#xff1a;本系列博客为C深度解剖系列内容&#xff0c;以某个点为中心进行相关详细拓展 适宜人群&#xff1a;已大体了解C语法同学 作者留言&#xff1a;本博客相关内容如需转载请注明出处&#xff0c;本人学疏才浅&#xff0c;难免存在些许错误&#xff0c;望留言指正 作…

低代码开发:助力企业迈向智能化未来

在科技日新月异的今天&#xff0c;软件开发行业面临着前所未有的挑战。为了适应市场的快速变化和业务的不断创新&#xff0c;开发团队需要寻求更高效、更便捷的开发方式。近年来&#xff0c;低代码开发逐渐成为软件开发领域的热点&#xff0c;它以简洁、高效、易用等特点吸引了…

智能高压森林应急消防泵特点及优势

随着科技的发展&#xff0c;消防设备也在不断地升级改进。智能高压森林应急消防泵作为一种新型的消防设备&#xff0c;其特点和优势日益凸显&#xff0c;为森林火灾的扑救提供了有力的支持。本文将从以下几个方面对智能高压森林应急消防泵的特点和优势进行阐述。 一、高强度耐腐…

Ubuntu本地安装code-server结合内网穿透实现安卓平板远程写代码

文章目录 1.ubuntu本地安装code-server2. 安装cpolar内网穿透3. 创建隧道映射本地端口4. 安卓平板测试访问5.固定域名公网地址6.结语 1.ubuntu本地安装code-server 准备一台虚拟机,Ubuntu或者centos都可以&#xff0c;这里以VMwhere ubuntu系统为例 下载code server服务,浏览器…

代码注释怎么写:提升代码可读性

在编程中&#xff0c;有一种无声的艺术&#xff0c;那就是代码注释。这可能看起来微不足道&#xff0c;但其实非常关键。它不仅有助于他人理解你的代码&#xff0c;也是自我表达的一种方式。 为什么写注释&#xff1f; 在我们深入细节之前&#xff0c;先让我们探讨一下为什么…

机器学习第二十八周周报 PINNs2

文章目录 week28 PINNs2摘要Abstract一、Lipschitz条件二、文献阅读1. 题目数据驱动的偏微分方程2. 连续时间模型3. 离散时间模型4.结论 三、CLSTM1. 任务要求2. 实验结果3. 实验代码3.1模型构建3.2训练过程代码 小结参考文献 week28 PINNs2 摘要 本文主要讨论PINN。本文简要…

【JavaScript】原型链和继承

文章目录 1. 原型链的概念原型原型链 2. 构建原型链构造函数与原型实例与原型链 3. 继承的实现原型链继承原型链的问题 4. 继承的最佳实践构造函数继承&#xff08;经典继承&#xff09;组合继承 5. ES6中的类和继承6. 总结 在 JavaScript 中&#xff0c;原型链和继承是构建对象…

ET9300-EtherCAT从站协议栈应用指南——第三弹,硬件抽象层预览

目录 宏定义中断服务函数void ECAT_CheckTimer (void)void PDI_Isr (void)void Sync0_Isr (void), void Sync1_Isr (void)ENABLE_ESC_INT DISABLE_ESC_INT 接口函数、宏UINT16 HW_Init(void)void HW_Release(void)UINT16 HW_GetALEventRegister(void)UINT16 HW_GetALEventRegis…

天然肠衣市场分析:预计到2025年将达到45亿美元

肠衣作为包装香肠馅料的原材料一般分为可食用和不可食用两种&#xff0c;其中天然肠是由猪、羊等家畜多层肠道制作而成的&#xff0c;近些年来天然肠衣在全球市场需求不断增加。一、全球市场分析 1. 市场规模&#xff1a;根据市场研究机构的数据&#xff0c;2019年全球天然肠衣…

访问学者感谢信|人文社科工作者赴北欧访学

编者按&#xff1a;这位访问学者从委托我们申请到获得邀请函只用了一个月时间。为了表达感激之情&#xff0c;其当时就写了这封感谢信&#xff0c;但依据我们的惯例&#xff0c;一般是待申请者出国&#xff0c;一切安排妥当后再发成功案例。所以时至今日&#xff0c;才将该申请…