手动编写快排(快速排序),实现从小到大和从大到小排序
快排的方法类
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]+" ");}}}
手动编写快排(快速排序),实现从小到大和从大到小排序相关推荐
- 奇数在前,偶数在后;奇数按从大到小排序;偶数按从小到大排序。对其重新排序。
蒜术师给了你一个 10 个整数的序列,要求对其重新排序.排序要求: 奇数在前,偶数在后: 奇数按从大到小排序: 偶数按从小到大排序. 输入格式 输入一行,包含 1010 个整数,彼此以一个空格分开,每 ...
- 从一列数中筛除尽可能少的数使得从左往右看,这些数是从小到大再从大到小的(网易)。...
题目描述: 从一列数中筛除尽可能少的数使得从左往右看,这些数是从小到大再从大到小的(网易). 分析: 这可以用双端LIS方法来解决,先求一遍从左到右的,再求一遍从右到左的.最后从里面选出和最大的即可. ...
- 详解【java实现】编写一个程序,从键盘读入一段英文(多行),找出其中所有的英文单词,统计每个单词出现的次数,并按照单词出现次数由大到小排序后输出。
题目: 编写一个程序,从键盘读入一段英文(多行),找出其中所有的英文单词,统计每个单词出现的次数,并按照单词出现次数由大到小排序后输出. 前言: "统计每个单词出现的次数,并且按照由大到小排 ...
- JS中冒泡排序从小到大以及从大到小
今天来讲一讲如何用JS来实现冒泡排序,冒泡排序可以分为从小到大排序以及从大到小排序,我们分别来看一下: 从小到大排序: var arr=[4,53,145,6,9,0,23,79,255,77]; f ...
- 【C语言】选择排序从小到大,从大到小,详细注释
前言 选择排序算法通过选择和交换来实现排序,其排序流程如下: (1)首先从原始数组中选择最小的1个数据,将其和位于第1个位置的数据交换. (2)接着从剩下的n-1个数据中选择次小的1个元素,将其和第2 ...
- js冒泡排序-(从大到小排序,从小到大排序)
// 冒泡排序法-从大到小排序 let itemSort = [8, 1, 4, 7, 3, 2, 9]; for (let i = 0; i < itemSort.length; i++) { ...
- 图解快排——快速排序算法(quick sort)
快速排序 quick sort 算法思想 算法图解 算法实现(C语言) 性能分析 算法思想 快速排序算法是对冒泡排序算法的一种改进算法,在当前所有内部排序算法中,快速排序算法被认为是最好的排序算法之一 ...
- java冒泡从大到小排序代码_Java 冒泡排序、快速排序实例代码
冒泡排序 冒泡排序是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地 进行直到没有再需要交换,也就是说该数列已经排序完成.这 ...
- matlab从大到小排序的语句,从小到大排序的方法
%N的求解 %注意:从小到大排序的方法:sort()函数与fliplr()函数的结合使用. clc clear %--------------A为cheng_xu的X----------------- ...
最新文章
- 【协议分析】Wireshark 过滤表达式实例
- 切换目录命令 - cd
- 高精度数取余(C\C++)
- cover letter 和response letter的写法
- StringWriter/PrintWriter在Java输出异常信息中的作用
- 万年5W充电头再见!2019新iPhone或将标配18W快充头
- zTree结合Asp.net实现异步加载数据(写的可能有点简单....)
- DPM 2007 BUG
- hql中获取前一天的数据_如何使用DNS和SQLi从数据库中获取数据样本
- python单样本t检验_SPSS单一样本的T检验
- Liunx 切换用户This account is currently not available
- 游戏汉化技术内幕——第3章索引和资源的说明
- html判断闰年,javascript怎么判断是否闰年?
- transition动画
- oel6安装oracle报错,OEL6.1下安装Oracle 11gr2 RAC
- JavaScript性能优化方案,你知道几个?
- Unity中利用材质自发光实现物体闪烁效果
- 2016年4月1日有这么多新规定诞生,有影响你的生活吗?
- springboot_vue校园二手交易平台
- 如何选择成长型新股?还是得看股票基本面!