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

常见的排序算法---快速排序算法

快速排序算法
快排是基于分治的思想来的,快速排序就是在元素序列中选择一个元素作为基准值,每趟总数据元素的两端开始交替排序,将小于基准值的交换的序列前端,大于基准值的交换到序列后端,介于两者之间的位置称为基准值最终的位置。同时序列被划分成两个子序列,再对两个子序列进行排序,这个过程就是递归的过程,直到子序列的长度为1,则完成排序。
模板 洛谷:P1177排序

代码

import java.util.Scanner;class quickSort {public static void main(String[] args) {Scanner scanner=new Scanner(System.in);int n=scanner.nextInt();int arr[]=new int[n];for (int i = 0; i < arr.length; i++) {arr[i]=scanner.nextInt();}quick(arr,0,arr.length-1);for (int i = 0; i < arr.length; i++) {System.out.print(arr[i]+" ");}}public  static  void quick(int [] keys, int begin,int end){if (begin>=0&&begin<end&&end<keys.length){int i=begin,j=end;int x=keys[i];//找到基准元素while (i!=j){ //while (i<j&&keys[j]>=x){ //从后往前找j--;} //直到找到小的数字了if (i<j){keys[i++]=keys[j]; //i往后移动一位,讲原来i的位置赋值给j}while (i<j&keys[i]<=x){ //从前向后寻找较大值移动i++;}//找到较大值了if (i<j){keys[j--]=keys[i];//讲较大值赋值给j,并且j往前移动一位;}}//当i等于j的时候结束上面的循环 需要重新设置基准值,基准值就是当前的位置keys[i]=x;quick(keys,begin,j-1);quick(keys,i+1,end);}}
}
时间复杂度 最好 nlogn 最坏on方

快速排序算法并且是不稳地的。

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

相关文章:

  • hive企业级调优策略之分组聚合优化
  • 英码科技受邀参加2023计算产业生态大会,分享智慧轨道交通创新解决方案
  • 【openssl】Linux升级openssl-1.0.1到1.1.1
  • 美国联邦机动车安全标准-FMVSS
  • 龙迅LT6211B,HDMI1.4转LVDS,应用于AR/VR市场
  • 解决docker拉取镜像错误 missing signature key 问题
  • 倒计数器:CountDownLatch
  • vue内容渲染
  • Kafka为什么能高效读写数据
  • Flink系列之:Table API Connectors之Debezium
  • 【Python基础】文件读写
  • 电脑风扇控制软件Macs Fan Control mac支持多个型号
  • clangd:Couldn‘t build compiler instance
  • Springboot启动出现Error to process server push response的解决方法
  • P2P网络下分布式文件共享场景的测试
  • 计算机组成原理综合1
  • 探秘 AJAX:让网页变得更智能的异步技术(下)
  • CentOs7.x安装部署SeaTunnelWeb遇到的坑
  • Netlink通信
  • Python打造简单而强大的聊天机器人:详解与实例代码
  • Unity 通过代码将一张大图切成多个小图的方法
  • Spring Cloud Gateway请求路径修改指南:详解ServerWebExchange的完美解决方案及代码示例
  • AI+爬虫 爬虫宝
  • 【matlab】绘制横状双组渐变柱状图
  • 如何下载知网论文、专利的PDF格式
  • SMARTFORMS打印问题
  • uniapp组件和周期的知识点以及怎么使用
  • 【Java JVM】实例对象的创建
  • sectigo多域名通配符证书
  • vue 流光边框矩形圆形容器