Linux C语言 33-排序算法

Linux C语言 33-排序算法

本节关键字:C语言 排序算法 选择排序 冒泡排序 快速排序
相关C库函数:

冒泡排序

冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。

void BubbleSort(int* a, int n)
{for (int i = 0; i < n; i++){int exchange = 0;// 单趟for (int j = 1; j < n - i; j++){if (a[j - 1] > a[j]) {exchange = 1;Swap(&a[j - 1], &a[j]);}}if (exchange == 0) //已经有序了break;}
}

选择排序

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

void SelectSort(int* a, int n)
{int left = 0;int right = n - 1;while (left<right){int mini = left, maxi = left;for (int i = left+1; i <= right; i++){if (a[i] < a[mini]) mini = i;if (a[i] > a[maxi])maxi = i;}Swap(&a[mini], &a[left]);if (maxi == left) //防止掉包(很容易漏,很重要!maxi = mini;Swap(&a[maxi], &a[right]);left++;right--;}
}

快速排序

在区间中随机挑选一个元素作基准,将小于基准的元素放在基准之前,大于基准的元素放在基准之后,再分别对小数区与大数区进行排序。

void QuickSort(int* a, int begin, int end)
{// 子区间相等只有一个值或者不存在那么就是递归结束的子问题if (begin >= end)return;if (end - begin + 1 <= 13){InsertSort(a + begin, end - begin + 1);} else{int keyi = PartSort3(a, begin, end);// [begin, keyi-1]keyi[keyi+1, end];QuickSort2(a, begin, keyi - 1);QuickSort2(a, keyi + 1, end);}
}

插入排序

待补充 …

希尔排序

待补充 …

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

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

相关文章

【LeetCode刷题】--90.子集II

90.子集II class Solution {public List<List<Integer>> subsetsWithDup(int[] nums) {List<List<Integer>> ans new ArrayList<>();List<Integer> list new ArrayList<>();//排序后便于去重Arrays.sort(nums);dfs(0,nums,ans,lis…

fastReID论文总结

fastReID论文总结 fastReIDReID所面临的挑战提出的背景概念&#xff1a;所谓ReID就是从视频中找出感兴趣的物体&#xff08;人脸、人体、车辆等&#xff09;应用场景&#xff1a;存在的问题&#xff1a;当前的很多ReID任务可复用性差&#xff0c;无法快速落地使用解决方式&…

常见的 QML 类型

在 QML&#xff08;Qt Modeling Language&#xff09;中&#xff0c;“type” 通常指的是定义特定界面组件或功能的元素。QML 类型可以是基本的用户界面元素&#xff0c;如按钮或文本框&#xff0c;也可以是更复杂的控件&#xff0c;如列表视图或滑块。QML 类型还可以是用于组织…

基于SpringBoot实现的教务查询系统

一、系统架构 前端&#xff1a;html | js | css | jquery | bootstrap 后端&#xff1a;springboot | springdata-jpa 环境&#xff1a;jdk1.7 | mysql | maven 二、代码及数据库 三、功能介绍 01. 登录页 02. 管理员端-课程管理 03. 管理员端-学生管理 04. 管理员端-教师管理…

EntityFrameworkCore数据库优先命令总结

初始化&#xff0c;直接使用数据库逆向生成模型 命令如下&#xff1a; Scaffold-DbContext connectionString providerName options C#有偿Q群&#xff1a;927860652这里的每个参数都有自己的用途&#xff1a; connectionString&#xff1a;数据库连接字符串。这应包括服…

C++ day45 爬楼梯 零钱兑换 完全平方数

题目1&#xff1a;70 爬楼梯&#xff08;进阶版&#xff09; 题目链接&#xff1a;爬楼梯 对题目的理解 需要爬n阶才能到达楼顶&#xff0c;每次可以至多爬m个台阶&#xff0c;m的区间是[1,n)&#xff0c;有多少种方法爬到楼顶 本题是一个完全背包问题&#xff0c;每一阶都…

史上最全接单平台集锦,程序员不容错过!

非典型程序员不是每天都累成狗&#xff0c;天天”996"甚至”007“。可能&#xff0c;面临着上班摸鱼没事干&#xff0c;下班躺尸打游戏的无聊境况。那么&#xff0c;如果你也是这样的程序员&#xff0c;有没有什么安排可以打发时间&#xff1f; 闲着还不如挣钱~心情好的时…

uniapp 使用 flex布局 将 图片展示 循环排列两列

将以下代码改成图片展示 循环排列两列 展示 <template><view><image v-for"(image, index) in imageList" :key"index" :src"image"></image></view> </template><script> export default {data() {…

【QML】qml+gstreamer显示的同时录像,避免卡顿

1. 问题 使用QML的CameravideoRecorder(Camera)VideoOutput实现显示加录像功能。在Ubuntu上运行正常&#xff0c;视频流畅。但是在开发板上&#xff08;RK3568&#xff09;上出现明显卡顿&#xff0c;无法正常录像。 2. 解决方案 将摄像头数据通过gstreamer共享内存到某个位…

cddd 安装指南(pip install cddd)

pip install cddd 这个命令可能会报错&#xff0c;因为要求是TensorFlow1.10.0 TensorFlow1.10.0对应的Python版本是3.6&#xff0c;所以如果你的Python版本是3.6以上是不行的.....

PTApt——2023年软件设计综合实践_7(数据结构)

6-1 递增的整数序列链表的插入 本题要求实现一个函数&#xff0c;在递增的整数序列链表&#xff08;带头结点&#xff09;中插入一个新整数&#xff0c;并保持该序列的有序性。 答案&#xff1a; 语言选C(gcc) List Insert(List L, ElementType X) {List tmp (List) mal…

142. 环形链表 II --力扣 --JAVA

题目 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使…

OpenCV实现手势音量控制

前言&#xff1a; Hello大家好&#xff0c;我是Dream。 今天来学习一下如何使用OpenCV实现手势音量控制&#xff0c;欢迎大家一起前来探讨学习~ 一、需要的库及功能介绍 本次实验需要使用OpenCV和mediapipe库进行手势识别&#xff0c;并利用手势距离控制电脑音量。 导入库&am…

Python内置函数与标准库函数的详细解读

一、内置函数与标准库函数的区分 Python 解释器自带的函数叫做内置函数&#xff0c;这些函数可以直接使用&#xff0c;不需要导入某个模块。 Python 解释器也是一个程序&#xff0c;它给用户提供了一些常用功能&#xff0c;并给它们起了独一无二的名字&#xff0c;这些常用功能…

JSP 9大内置对象详解

一、内置对象特点: 1.由JSP规范提供,不用编写者实例化。 2. 通过Web容器实现和管理 3.所有JSP页面均可使用 4.只有在脚本元素的表达式或代码段中才可使用(<%使用内置对象%>或<%使用内置对象%>) 二、常用内置对象: 1.输出输入对象:request对象、response对象、…

C++初阶 | [五] 内存管理

摘要&#xff1a;new and delete&#xff0c;定位new&#xff0c;&#xff08;C内存管理的方式&#xff09;&#xff0c;malloc/free和new/delete的区别&#xff0c;内存泄漏 关于内存&#xff1a; 栈又叫堆栈——非静态局部变量/函数参数/返回值等等&#xff0c;栈是向下增长…

华为OD机试 - 园区参观路径(Java JS Python C)

题目描述 园区某部门举办了Family Day,邀请员工及其家属参加; 将公司园区视为一个矩形,起始园区设置在左上角,终点园区设置在右下角; 家属参观园区时,只能向右和向下园区前进,求从起始园区到终点园区会有多少条不同的参观路径。 输入描述 第一行为园区的长和宽; 后…

Linux详解——安装JDK

目录 一、下载jdk 二、tar包安装 三、rpm包安装 一、下载jdk 1.下载jdk https://www.oracle.com/technetwork/java/javase/downloads/index.html 2.通过CRT|WinSCP工具将jdk上传到linux系统中 二、tar包安装 # 1.将JDK解压缩到指定目录 tar -zxvf jdk-8u171-linux…

FreeRTOS学习之路,以STM32F103C8T6为实验MCU(2-12:内存管理)

学习之路主要为FreeRTOS操作系统在STM32F103&#xff08;STM32F103C8T6&#xff09;上的运用&#xff0c;采用的是标准库编程的方式&#xff0c;使用的IDE为KEIL5。 注意&#xff01;&#xff01;&#xff01;本学习之路可以通过购买STM32最小系统板以及部分配件的方式进行学习…

苍穹外卖--查看,删除购物车

代码开发 Controller层 在ShoppingCartController中创建查看购物车的方法&#xff1a; /*** 查看购物车* return*/GetMapping("/list")ApiOperation("查看购物车")public Result<List<ShoppingCart>> list(){return Result.success(shopping…