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

快速排序.

文章目录

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


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


🍊自我介绍

  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.mrgr.cn/news/55739.html

相关文章:

  • 今日头条躺赚流量:自动化新闻爬取和改写脚本
  • 【MyBatis-Plus系列】QueryWrapper中or的使用
  • Linux系统安装软件的4种方式【源码配置编译安装、yum安装、rpm包安装、二进制软件包安装(.rpm/.tar.gz/.tgz/.bz2)】
  • 中国信通院联合中国电促会开展电力行业企业开源典型实践案例征集
  • 鸿蒙开发 四十五 鸿蒙状态管理(嵌套对象界面更新)
  • 案例分享-优秀蓝色系UI界面赏析
  • 【Android_14】ACodec-OMX跨IPC的一些类
  • 【yolov8旋转框检测】微调yolov8-obb目标检测模型:数据集制作和训练
  • STM32G4系列MCU的启动项配置
  • 【luogu P2148】 ED(SG函数)
  • Python数值计算(27)—— 数值微分
  • 基于Springboot在线视频网站的设计与实现
  • 心觉:突破自己
  • 51单片机快速入门之 IIC I2C通信
  • UML之用例图详解
  • 【ShuQiHere】深入了解逻辑门与晶体管数量:CMOS技术详解
  • 毕业设计选题:基于Hadoop的热点新闻分析系统的设计与实现
  • js构造函数和原型对象,ES6中的class,四种继承方式
  • Python Flask 数据库开发
  • 提示词高级阶段学习day3.1
  • 目前最新 Reflector V11.1.0.2067版本 .NET 反编译软件
  • 【C++】拆分详解 - stack和queue
  • 03_深入理解Linux:系统组成、内核版本及文件系统详解
  • 【MySQL】索引和事务
  • JAVA继承
  • 时间数据可视化基础实验——Python实现