【九日集训】第五天:排序

今天主要学习了C语言中的排序API,Qsort()本质上还是使用快速排序实现的;

具体使用方法:qsort(待排序数组, 数组长度, 每个元素字节长 sizeof(int), 比较函数)

比较函数

比较函数决定当前排序是升序还是降序,传入两个参数,返回1则交换,-1和0则不交换

一般使用方法

int cmp(const void*p1, const void*p2) {int v1 = *(int *) p1;int v2 = *(int *) p2;if(v1 > v2) {return 1;}else if(v1 < v2) {return -1;}return 0;
}

简化写法(可以确保数组数据相减不超过32位整形):

int cmp(const void * p1, const void * p2) {return (*(int *)p1) - (*(int *) p2);
}

第一题

912. 排序数组 - 力扣(LeetCode)

int cmp(const void*p1, const void*p2) {int v1 = *(int *) p1;int v2 = *(int *) p2;if(v1 > v2) {return 1;}else if(v1 < v2) {return -1;}return 0;
}int* sortArray(int* nums, int numsSize, int* returnSize) {qsort(nums, numsSize, sizeof(int), cmp);*returnSize = numsSize;return nums; 
}   

使用排序函数即可,记得设置返回长度参数.

第二题

169. 多数元素 - 力扣(LeetCode)

// 比较函数
int cmp(const void *p1, const void *p2) {return (*(int *)p1) - (*(int *)p2);
}int majorityElement(int* nums, int numsSize) {if(numsSize == 1) return nums[0]; //如果有一个元素则返回qsort(nums, numsSize, sizeof(int), cmp);  //排序int maxNum = 0, temp = 1;int res;  // 遍历数组,相同的数必然在一起,计数最大的返回for(int i = 1; i < numsSize; i++) {if(nums[i] == nums[i - 1]) {temp++;}else {temp = 1;}if(temp > maxNum) {maxNum = temp;res = nums[i];}}return res;
}

第三题

217. 存在重复元素 - 力扣(LeetCode)

int cmp(const void *p1, const void *p2) {int v1 = *(int *) p1;int v2 = *(int *) p2;return v1 - v2;
}bool containsDuplicate(int* nums, int numsSize) {qsort(nums, numsSize, sizeof(int), cmp);for(int i = 0; i < numsSize - 1; i++){if(nums[i] == nums[i + 1]) {return true;}}return false;
}

第四题

164. 最大间距 - 力扣(LeetCode)

int cmp(const void * p1, const void * p2) {return (*(int *) p1) - (*(int *)p2);
}int maximumGap(int* nums, int numsSize) {if(numsSize < 2) return 0;qsort(nums, numsSize, sizeof(int), cmp);int maxgap = 0;for(int i = 0; i < numsSize - 1; i++) {if(nums[i + 1] - nums[i] > maxgap) {maxgap = nums[i + 1] - nums[i];}}return maxgap;
}

第五题

905. 按奇偶排序数组 - 力扣(LeetCode)

int cmp(const void * p1, const void * p2) {return (*(int *) p1) & 1 - (*(int *)p2) & 1;
}int* sortArrayByParity(int* nums, int numsSize, int* returnSize) {qsort(nums, numsSize, sizeof(int), cmp);*returnSize = numsSize;return nums;
}

将函数条件改一下即可,偶数放到前面,奇数放到后面

第六题

539. 最小时间差 - 力扣(LeetCode)

int cmp(const void *p1, const void *p2) {return (*(int *) p1) - (* (int *) p2);
}int min(int a, int b) {return a > b ? b : a;
}int findMinDifference(char ** timePoints, int timePointsSize){int *res = (int *)malloc(sizeof(int) * timePointsSize);int ans = 1440;int a,b;for(int i = 0; i < timePointsSize; i++) {sscanf(timePoints[i], "%d:%d", &a, &b);res[i] = a * 60 + b;}qsort(res, timePointsSize, sizeof(int), cmp);  //排序数字数组   for(int i = 1; i < timePointsSize; i++) {if(res[i] - res[i - 1] < ans) {ans = res[i] - res[i - 1];}}ans = min(ans, res[0] - res[timePointsSize - 1] + 1440);return ans;
}

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

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

相关文章

在Spring Boot中使用不同的日志

前言&#xff0c;本篇就是介绍在Java中使用相关的日志&#xff0c;适合初学者看&#xff0c;如果对这篇不感兴趣的可以移步了&#xff0c;本篇主要围绕我们Java中的几种日志类型&#xff0c;也说不上有多深入&#xff0c;算的上浅入浅出吧&#xff0c;如果你有一段时间的开发经…

单片机_RTOS_架构

一. RTOS的概念 // 经典单片机程序 void main() {while (1){喂一口饭();回一个信息();} } ------------------------------------------------------ // RTOS程序 喂饭() {while (1){喂一口饭();} }回信息() {while (1){回一个信息();} }void main() {create_task(喂饭);cr…

OpenHarmony 4.0 Release 编译及报错

1、环境准备 安装下面这三东西&#xff0c;是为了下载 Harmony 源码 sudo apt install curl sudo apt install python3-pip sudo apt install git-lfs 安装下面这五个东西&#xff0c;是为了解决编译到最后报错(头铁不信的&#xff0c;你可以试试&#xff0c;等最后再安装) …

opencv常用函数表

函数名功能说明cv2.imread()读取图像文件cv2.imshow()显示图像窗口cv2.imwrite()保存图像文件cv2.cvtColor()颜色空间转换cv2.resize()图像缩放cv2.flip()图像翻转cv2.rectangle()绘制矩形cv2.circle()绘制圆形cv2.line()绘制直线cv2.putText()绘制文本cv2.bitwise_and()与操作…

【Hadoop】集群资源管理器 YARN

一、yarn 简介 Apache YARN (Yet Another Resource Negotiator) 是 hadoop 2.x 引入的分布式资源管理系统。主要用于解决 hadoop 1.x 架构中集群资源管理和数据计算耦合在一起&#xff0c;导致维护成本越来越高的问题。 yarn主要负责管理集群中的CPU和内存 用户可以将各种服…

linux 中断管理机制

中断的概念 中断是指在CPU正常运行期间&#xff0c;由于内外部事件或由程序预先安排的事件引起的 CPU 暂时停止正在运行的程序&#xff0c;转而为该内部或外部事件或预先安排的事件服务的程序中去&#xff0c;服务完毕后再返回去继续运行被暂时中断的程序。Linux中通常分为外部…

yolov1网络结构说明

文章目录 一. 网络结构二. 网络说明1. 网络的输入2. 网络的输出(1) 5 5表示:每个网格使用两个先验框进行预测。(2) “5”表示&#xff1a;每个先验框包含的预测信息的数量。(3) 20表示&#xff1a;20个分类预测值(4) 每个网格能预测几个目标&#xff1f; 一. 网络结构 论文下…

在日常工作中怎么处理vue项目中的错误的?

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Vue篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容:vue项目中的错误如何处理 目录 一、错误类型 二、如何处理 后端接口错误 代码逻辑问题 全局设…

各厂商服务器存储默认管理口登录信息(默认IP、用户名、密码)收集汇总

一、服务器IPMI管理信息 服务器IPMI管理信息 设备类型 设备型号 默认管理IP 默认用户名 默认密码 华为服务器 E6000 10.10.1.101-10.10.1.110 root Huawei12#$ RH2288 v3系列 192.168.2.100 root Huawei12#$ RH2288 v5系列 192.168.2.100 Administrator Admin@9000 T6000 10.10…

Elasticsearch 快照如何工作?

作者&#xff1a;Lutf ur Rehman Elastic 提供许多由讲师指导的面对面和虚拟现场培训以及点播培训。 我们的旗舰课程是 Elasticsearch 工程师、Kibana 数据分析和 Elastic 可观测性工程师。 所有这些课程都会获得认证。有关这些课程的详细介绍&#xff0c;请参考我之前的文章 “…

知识蒸馏相关基础知识

知识蒸馏 前置知识 Loss 现在分数-正确分数1 例&#xff1a; 正则化 Regularization 用来防止过拟合 知识蒸馏相关 softmax 把分数转换为概率的一种方法&#xff0c;e的次方 hard targets 和 soft targets 蒸馏温度 T 在原来的softmax下&#xff0c;除以某个系数&am…

Sublime text 添加到鼠标右键菜单,脚本实现

Sublime text 添加到鼠标右键菜单 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\SublimeText] "Open with Sublime Text" "Icon""D:\\Program Files\\Sublime Text\\sublime_text.exe,0" [HKEY_CLASSES_ROOT\*\shell\Subl…

HTTP采用的SSL/TLS标准如何保证通信的安全性?

HTTPS&#xff08;Hypertext Transfer Protocol Secure&#xff09;是在HTTP基础上添加了SSL/TLS加密层的安全版本。它使用SSL&#xff08;Secure Sockets Layer&#xff09;或TLS&#xff08;Transport Layer Security&#xff09;协议对数据进行加密传输&#xff0c;确保数据…

win10下安装 Anaconda + Cuda + Cudnn + Pycharm + Pytorch

1.安装Anaconda &#xff08;1-1&#xff09;下载Ananconda, Anaconda官网 选择windows版本&#xff1b; &#xff08;1-2&#xff09;安装Anaconda,一般选择【Just Me】 &#xff08;1-3&#xff09;建议不要装在C盘&#xff0c;后期多环境的python环境和各种库文件会占用很多…

Docker的基本概念和优势,以及在应用程序开发中的实际应用

文章目录 概要 基本概念 容器 (Container): 镜像 (Image): Dockerfile: 仓库 (Repository): 容器编排 (Orchestration): Docker Compose: Docker Daemon 和 Docker Client: 网络 (Network): 数据卷 (Volume): 主要优势 应用场景 小结 概要 Docker 是一种容器化平台&#xff0c;…

ruoyi-vue 整合EMQX接收MQTT协议数据

EMQX安装完成后&#xff0c;需要搭建客户端进行接收数据进一步对数据处理&#xff0c;下面介绍基于若依分离版开源框架来整合EMQX方法。 1.application.yml 添加代码 mqtt:hostUrl: tcp://localhost:1883username: devpassword: devclient-id: MQTT-CLIENT-DEVcleanSession: …

【物联网与大数据应用】Hadoop数据处理

Hadoop是目前最成熟的大数据处理技术。Hadoop利用分而治之的思想为大数据提供了一整套解决方案&#xff0c;如分布式文件系统HDFS、分布式计算框架MapReduce、NoSQL数据库HBase、数据仓库工具Hive等。 Hadoop的两个核心解决了数据存储问题&#xff08;HDFS分布式文件系统&#…

mysql5.7生成SSL证书

1、创建 CA 私钥和 CA 证书 &#xff08;1&#xff09;下载并安装openssl,将bin目录配置到环境变量&#xff1b; &#xff08;2&#xff09;设置openssl.cfg路径&#xff08;若不设置会报错&#xff0c;找不到openssl配置文件&#xff09; set OPENSSL_CONFG:\Program Files\…

nexus 制品库管理

目录 一、nexus 介绍 二、nexus 支持的仓库 三、nexus 部署 四、nexus 数据备份 五、创建一个内网yum源 六、创建一个代理yum仓库 七、jenkins 使用 nexus插件 7.1 jenkins 安装插件 7.2 配置 maven 工程 7.3 查看构建和上传 一、nexus 介绍 Nexus 是一个强大的仓库管…

在氮化镓和AlGaN上的湿式数字蚀刻

引言 由于其独特的材料特性&#xff0c;III族氮化物半导体广泛应用于电力、高频电子和固态照明等领域。加热的四甲基氢氧化铵(TMAH)和KOH3处理的取向相关蚀刻已经被用于去除III族氮化物材料中干法蚀刻引起的损伤&#xff0c;并缩小垂直结构。 不幸的是&#xff0c;由于化学蚀…