快排的方法类

package com.hcc.util;public class QuickSort {/*** * @param arr 存放数据的数组* @param left  需要排序的开始下标* @param right 需要排序的结束下标*/public static void recursiveSort(int[] arr,int left,int right) {if(left < right) {//从小到大排序//int positionValue = sortingMinToMax(arr, left, right);//从大到小排序int positionValue = sortingMaxToMin(arr, left, right);recursiveSort(arr, 0, positionValue-1);int test = positionValue+1;System.out.println("left:"+test+" right:"+right);recursiveSort(arr, positionValue+1, right);}}/*** 真正实现排序的方法* @param arr* @param left* @param right*/private static  int sortingMinToMax(int[] arr,int left,int right) {int  baseValue = arr[left];while(left < right){while(baseValue < arr[right] && left < right){right--;}arr[left] = arr[right];while(baseValue > arr[left] && left <right) {left++;}arr[right] = arr[left];}arr[left] = arr[right] = baseValue;return left;}@SuppressWarnings("unused")private static int sortingMaxToMin(int[] arr,int left,int right) {int baseValue = arr[left];while(left < right) {while(left < right && baseValue > arr[right]) {right--;}arr[left] = arr[right];while(left < right && baseValue < arr[left]) {left++;}arr[right] = arr[left];}arr[left] = baseValue;return left;}}

测试类

public class Test {public static void main(String[] args) {// 69 65 90 37 92 6 28 54  int[] arr = {69,65,90,37,92,6,28,54};System.out.println("原始数据:");printSortData(arr);System.out.println();System.out.println("快速排序:");quickSortTest(arr);}public static void quickSortTest(int[] arr) {QuickSort.recursiveSort(arr, 0, arr.length-1);printSortData(arr);}public static void printSortData(int [] arr) {int arrLength = arr.length;for(int i = 0;i < arrLength;i++) {System.out.print(arr[i]+" ");}}}

手动编写快排(快速排序),实现从小到大和从大到小排序相关推荐

  1. 奇数在前,偶数在后;奇数按从大到小排序;偶数按从小到大排序。对其重新排序。

    蒜术师给了你一个 10 个整数的序列,要求对其重新排序.排序要求: 奇数在前,偶数在后: 奇数按从大到小排序: 偶数按从小到大排序. 输入格式 输入一行,包含 1010 个整数,彼此以一个空格分开,每 ...

  2. 从一列数中筛除尽可能少的数使得从左往右看,这些数是从小到大再从大到小的(网易)。...

    题目描述: 从一列数中筛除尽可能少的数使得从左往右看,这些数是从小到大再从大到小的(网易). 分析: 这可以用双端LIS方法来解决,先求一遍从左到右的,再求一遍从右到左的.最后从里面选出和最大的即可. ...

  3. 详解【java实现】编写一个程序,从键盘读入一段英文(多行),找出其中所有的英文单词,统计每个单词出现的次数,并按照单词出现次数由大到小排序后输出。

    题目: 编写一个程序,从键盘读入一段英文(多行),找出其中所有的英文单词,统计每个单词出现的次数,并按照单词出现次数由大到小排序后输出. 前言: "统计每个单词出现的次数,并且按照由大到小排 ...

  4. JS中冒泡排序从小到大以及从大到小

    今天来讲一讲如何用JS来实现冒泡排序,冒泡排序可以分为从小到大排序以及从大到小排序,我们分别来看一下: 从小到大排序: var arr=[4,53,145,6,9,0,23,79,255,77]; f ...

  5. 【C语言】选择排序从小到大,从大到小,详细注释

    前言 选择排序算法通过选择和交换来实现排序,其排序流程如下: (1)首先从原始数组中选择最小的1个数据,将其和位于第1个位置的数据交换. (2)接着从剩下的n-1个数据中选择次小的1个元素,将其和第2 ...

  6. js冒泡排序-(从大到小排序,从小到大排序)

    // 冒泡排序法-从大到小排序 let itemSort = [8, 1, 4, 7, 3, 2, 9]; for (let i = 0; i < itemSort.length; i++) { ...

  7. 图解快排——快速排序算法(quick sort)

    快速排序 quick sort 算法思想 算法图解 算法实现(C语言) 性能分析 算法思想 快速排序算法是对冒泡排序算法的一种改进算法,在当前所有内部排序算法中,快速排序算法被认为是最好的排序算法之一 ...

  8. java冒泡从大到小排序代码_Java 冒泡排序、快速排序实例代码

    冒泡排序 冒泡排序是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地 进行直到没有再需要交换,也就是说该数列已经排序完成.这 ...

  9. matlab从大到小排序的语句,从小到大排序的方法

    %N的求解 %注意:从小到大排序的方法:sort()函数与fliplr()函数的结合使用. clc clear %--------------A为cheng_xu的X----------------- ...

最新文章

  1. 【协议分析】Wireshark 过滤表达式实例
  2. 切换目录命令 - cd
  3. 高精度数取余(C\C++)
  4. cover letter 和response letter的写法
  5. StringWriter/PrintWriter在Java输出异常信息中的作用
  6. 万年5W充电头再见!2019新iPhone或将标配18W快充头
  7. zTree结合Asp.net实现异步加载数据(写的可能有点简单....)
  8. DPM 2007 BUG
  9. hql中获取前一天的数据_如何使用DNS和SQLi从数据库中获取数据样本
  10. python单样本t检验_SPSS单一样本的T检验
  11. Liunx 切换用户This account is currently not available
  12. 游戏汉化技术内幕——第3章索引和资源的说明
  13. html判断闰年,javascript怎么判断是否闰年?
  14. transition动画
  15. oel6安装oracle报错,OEL6.1下安装Oracle 11gr2 RAC
  16. JavaScript性能优化方案,你知道几个?
  17. Unity中利用材质自发光实现物体闪烁效果
  18. 2016年4月1日有这么多新规定诞生,有影响你的生活吗?
  19. springboot_vue校园二手交易平台
  20. 如何选择成长型新股?还是得看股票基本面!

热门文章

  1. RTC音视频是什么意思?即构RTC音视频有什么优势
  2. (Alpha)Let's-版本测试报告
  3. c语言如何水仙花数,c语言如何解水仙花数
  4. 教你如何清除上网记录
  5. vnc下载,vnc下载软件该怎么选择?5款好用推荐
  6. 2022年全国职业技能大赛网络安全竞赛试题B模块自己解析思路(8)
  7. 阿里云弹性裸金属服务器-神龙架构(X-Dragon)揭秘
  8. web3.js 中文文档 入门
  9. 分析网络抓包用 python 更高效
  10. 10进制34进制转换