快速排序.

server/2024/10/22 9:15:00/

文章目录

  • 🍊自我介绍
  • 🍊快速排序
    • 快速排序的思想:
  • 🍊代码演示


你的点赞评论就是对博主最大的鼓励
当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~


🍊自我介绍

  Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群的一名“创始团队·嘉宾”“内容共创官” ,现在我来为大家介绍一下有关物联网-嵌入式方面的内容。


🍊快速排序

  快速排序是编程中经常使用到的一种排序方法。可是很多朋友对快速排序有畏难情绪,认为快速排序使用到了递归,是一种非常复杂的程序,其实未必如此。我们只要使用好了方法,就可以自己实现快速排序。我们快速排序采用了 分治法的思想。

快速排序的思想:

int a[] = {50,36,66,76,36,12,25,95};
1.首先定义一个基准数key,常选用第一个数据a[0]
定义两个变量i和j 。i保存第一个元素的地址,j保存最后一个元素的地址
然后j向前移动,i向后移动
2.从j开始,依次比较a[j]和key的值,找到a[j]比key小的值存放到a[i]的位置。即
(若是a[j] >= key, 则j–。否则,a[i] = a[j])

3.然后在从i开始,依次比较a[i]和key的值,找到a[i]比key大的值存放到a[j]的位置
若是a[i] <= key,则i++
否则,a[j] = a[i];

4.遍历结束结束后,i == j,把a[i] = key

然后在以此类推的方式比较[0~j-1] 数组和[i +1,9]元素的数组。最终遍历完成排序完成.

🍊代码演示

#include <stdio.h>void quick_sort(int a[],int low,int high)
{int i = 0,j = 0;int key = 0;i = low;  //保存第一个有效元素的下标j = high; //保存最后一个有效元素的下标key = a[low];while(i < j){while(i < j && a[j] >= key )j--;if(i < j){a[i] = a[j];}while(i < j && a[i] <= key)i++;if(i < j){a[j] = a[i];        }}//填充key的值到a[i]的值a[i] = key;if(j - 1 > low){quick_sort(a,low,j - 1);        }if(i + 1 < high){quick_sort(a,i + 1,high);        }return ;
}void printf_array(int a[],int len)
{int i = 0;for(i = 0;i < len;i++){printf("%d ",a[i]);        }putchar('\n');
}int main()
{int a[] = {50,36,66,76,36,12,25,95};int low = 0;int high = sizeof(a)/sizeof(a[0]) - 1;printf_array(a,sizeof(a)/sizeof(a[0]));quick_sort(a,low,high);printf("===============\n");printf_array(a,sizeof(a)/sizeof(a[0]));return 0;
}

http://www.ppmy.cn/server/133854.html

相关文章

基于SpringBoot+Vue+uniapp微信小程序的澡堂预订的微信小程序的详细设计和实现

项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念&#xff0c;提供了一套默认的配置&#xff0c;让开发者可以更专注于业务逻辑而不是配置文件。Spring Boot 通过自动化配置和约…

探讨Node.js生态中的npm与npx工具

在Node.js生态中&#xff0c;npm和npx是两个重要的工具&#xff0c;它们的功能虽然有所重叠&#xff0c;但使用场景却不同。理解它们的区别可以帮助开发者更高效地管理项目依赖与执行工具。 npm与npx的区别 npm&#xff1a;主要用于管理项目依赖。通过 npm install&#xff0…

使用fpm工具制作Vim.rpm包

背景&#xff1a;生产环境中的CentOS 7在安全扫描中被扫描出vim存在堆缓冲区溢出&#xff08;CVE-2024-45306&#xff09;等漏洞。根据漏洞说明&#xff0c;需要升级到最新版。 奈何CentOS 7已经停止维护了&#xff0c;所以&#xff0c;想在网上找一个最新版的vim.rpm相当不容易…

【贪心算法】(第六篇)

目录 按⾝⾼排序&#xff08;easy&#xff09; 题目解析 讲解算法原理 编写代码 优势洗牌&#xff08;⽥忌赛⻢&#xff09;&#xff08;medium&#xff09; 题目解析 讲解算法原理 编写代码 按⾝⾼排序&#xff08;easy&#xff09; 题目解析 1.题目链接&#xff1a;…

【大模型实战篇】大模型分词算法WordPiece分词及代码示例

继《大模型数据词元化处理BPE(Byte-Pair Encoding tokenization)》之后&#xff0c;我们针对大模型原始数据的分词处理&#xff0c;继续分享WordPiece分词技术【1】。 1. 原理分析 WordPiece 是 Google 开发的分词算法&#xff0c;用于预训练 BERT。此后&#xff0c;它被多个基…

LED计数电路综合实验

一 实验目的 使用Logisim软件设计出以下 LED 计数电路并进行运行 二 电路功能分析 电路功能分析 &#xff08;1&#xff09;In5 为 1 时&#xff0c;会让 out1 ~ out5 均为 1&#xff0c;故点击 In5时&#xff0c;out1~out5 均会发亮。 &#xff08;2&#xff09;In4 为 1 时…

排序算法 —— 堆排序

目录 1.堆排序的思想 2.堆排序的实现 建堆 向上调整建堆 向下调整建堆 选数 堆排序实现代码 3.堆排序总结 1.堆排序的思想 堆排序是利用堆这种数据结构设计的排序算法&#xff0c;更准确的说&#xff0c;是利用堆的删除操作所设计的一种排序算法。 比如&#xff1a;删…

基于Springboot新能源汽车租赁管理系统JAVA|VUE|SSM计算机毕业设计源代码+数据库+LW文档+开题报告+答辩稿+部署教+代码讲解

源代码数据库LW文档&#xff08;1万字以上&#xff09;开题报告答辩稿 部署教程代码讲解代码时间修改教程 一、开发工具、运行环境、开发技术 开发工具 1、操作系统&#xff1a;Window操作系统 2、开发工具&#xff1a;IntelliJ IDEA或者Eclipse 3、数据库存储&#xff1a…