当前位置: 首页 > news >正文

qsort实现数据排序

学习该库函数之前,先回顾一下冒泡排序

1.冒泡排序

#include<stdio.h>
void bubble_sort(int arr[], int sz)
{int i, j = 0;int flag = 1;for (i = 0; i < sz - 1; i++){for (j = 0; j < sz - 1 - i; j++){if (arr[j] > arr[j + 1]){int tmp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = tmp;flag = 0;}}if (flag == 1){break;}}}int main()
{int arr[10] = { 1,3,5,7,9,8,6,4,2,10 };int sz = sizeof(arr) / sizeof(arr[0]);bubble_sort(arr, sz);int k = 0;for (k = 0; k < sz; k++){printf("%d ", arr[k]);}return 0;
}

运行结果:

2. qsort库函数排序

优点:相较于上面的冒泡排序,它可以排序任意类型的数据。

根据

由上可知:

该库函数4个参数中还包含了返回值类型为int的函数指针

#include<stdio.h>
#include<stdlib.h>void print_arr(int arr[], int sz)
{int i = 0;for (i = 0; i < sz; i++){printf("%d ", arr[i]);}}int cmp_int(const void* p1, const void* p2)
{if (*(int*)p1 > *(int*)p2)return 1;else if (*(int*)p1 == *(int*)p2)return 0;else return -1;}void test1()
{int arr[] = { 9,8,7,6,5,4,3,2,1,0 };int sz = sizeof(arr) / sizeof(arr[0]);qsort(arr, sz, sizeof(arr[0]), cmp_int);print_arr(arr, sz);}int main()
{test1();return 0;
}

简化后:

#include<stdio.h>
#include<stdlib.h>int cmp_int(const void* p1, const void* p2)
{if (*(int*)p1 > *(int*)p2)return 1;else if (*(int*)p1 == *(int*)p2)return 0;else if (*(int*)p1 < *(int*)p2)return -1;
}int main()
{int arr[10] = { 1,3,5,7,9,8,6,4,2,10 };int sz = sizeof(arr) / sizeof(arr[0]);qsort(arr, sz, sizeof(arr[0]), cmp_int);int i = 0;for (i = 0; i < sz; i++){printf("%d ", arr[i]);}return 0;
}

运行结果:

http://www.lryc.cn/news/623079.html

相关文章:

  • 零知开源——基于STM32F407VET6的TCS230颜色识别器设计与实现
  • 启发式合并 + 莫队 恋恋的心跳大冒险
  • 【机器学习深度学习】OpenCompass:支持的开源评估数据集及使用差异
  • 告别重复纹理:用Substance Designer构建UE5程序化地貌材质系统
  • SysTick寄存器(嘀嗒定时器实现延时)
  • EP1C12F324I7N Altera Cyclone FPGA
  • [创业之路-550]:公司半年度经营分析会 - 解决方案汇总
  • Vue2.x核心技术与实战(一)
  • Java 学习笔记(基础篇3)
  • 嵌入式硬件篇---电源电路
  • php版的FormCreate使用注意事项
  • 从频繁告警到平稳发布:服务冷启动 CPU 风暴优化实践00
  • Flow-GRPO:通过在线 RL 训练 Flow matching 模型
  • 【OpenGL】LearnOpenGL学习笔记10 - 平行光、点光源、聚光灯
  • 2020/12 JLPT听力原文 问题二 2番
  • CSDN部分内容改为视频转到B站-清单
  • Flink Stream API 源码走读 - print()
  • B3865 [GESP202309 二级] 小杨的 X 字矩阵(举一反三)
  • 矩阵链相乘的最少乘法次数(动态规划解法)
  • 深入了解 swap:作用、局限与分区建立
  • Hadoop面试题及详细答案 110题 (16-35)-- HDFS核心原理与操作
  • 鸿蒙应用开发和Vue网页开发中生命周期的区别
  • (论文速读)ViDAR:视觉自动驾驶预训练框架
  • leetcode hot100数组:缺失的第一个正数
  • Winsows系统去除右键文件显示的快捷列表
  • Win11家庭版docker安装Minio
  • windows环境下使用vscode以及相关插件搭建c/c++的编译,调试环境
  • 93、23种设计模式之抽象工厂模式
  • MySQL建表练习
  • GaussDB 数据库架构师修炼(十三)安全管理(3)-数据库审计