快速排序java
快速排序(Quicksort)是对冒泡排序的一种改进。它是先在数组中找到一个关键数,第一趟排序将比关键数小的放在它的左边,比关键数大的放在它的右边。当第一趟排序结束后,再依次递归将左边和右边的进行排序,直到最后整个数组都有序为止。
一趟快速排序的算法是:

package com.dxx.order;
public class QuicSort {
public int[] sortArrs(int []arrs,int low,int high){
int l = low;
int h = high;
int povit = arrs[low];
//当l<h时,继续递归排序,当l=h时,说明已经一趟排序成功,退出
while(l<h){
//关键点和右边的h位数比较,如果小于右边h位的数,则h-1,即右边的标志左移一位
while(l<h && arrs[h]>povit)
h--;
if(l<h){
//当关键点大于h标志位的数时,交换两数的位置,l++,将关键点和左边l标志位的数比较
int temp = arrs[l];
arrs[l] = arrs[h];
arrs[h] = temp;
l++;
}
//反过来,将关键数与左边的数进行比较
while(l<h && arrs[l]<povit)
l++;
if(l<h){
//当关键点小于l标志位的数时,交换两数的位置,h--,当l=h时一趟排序结束
int temp = arrs[l];
arrs[l] = arrs[h];
arrs[h] = temp;
h--;
}
}
if(l>low)sortArrs(arrs, low, l-1);
if(h<high)sortArrs(arrs, h+1, high);
return arrs;
}
public void printArrs(int []arrs){
for(int i :arrs){
System.out.print(i + " ");
}
System.out.println();
}
}
主程序运行类:
package com.dxx.order;
public class MainTest {
public static void main(String[] args) {
int arrs[] = {14,3,2,5,12,8,6,7,10,11,1,9,13};
QuicSort quicSort = new QuicSort();
quicSort.printArrs(arrs);
arrs = quicSort.sortArrs(arrs,0,arrs.length-1);
quicSort.printArrs(arrs);
}
}
快速排序java的更多相关文章
- 快速排序 Java实现的快速排序
快速排序 Java实现的快速排序: package xc; import java.util.Arrays; import java.util.Random; /** * * @author dax ...
- 基本排序算法——快速排序java实现
简单的快速排序算法,我竟然花费了如此多的时间来写作,好好学习. /** * */ package basic.sort; import java.util.Arrays; import java.ut ...
- 排序算法----快速排序java
快速排序是对冒泡排序的一种改进,平均时间复杂度是O(nlogn) import java.util.Arrays; import java.util.Scanner; public class tes ...
- 快速排序 java详解
1.快速排序简介: 快速排序由C. A. R. Hoare在1962年提出.它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此 ...
- ADV-297 快速排序 java
问题描述 用递归来实现快速排序(quick sort)算法.快速排序算法的基本思路是:假设要对一个数组a进行排序,且a[0] = x.首先对数组中的元素进行调整,使x放在正确的位置上.同时,所有比x小 ...
- 快速排序-java
排序-快速排序 基本思想: 将数据划分为两部分,左边的所有元素都小于右边的所有元素:然后,对左右两边进行快速排序. 划分方法: 选定一个参考点(中间元素),所有元素与之相比较,小的放左边,大的放右边. ...
- 数组排序-冒泡排序-选择排序-插入排序-希尔排序-快速排序-Java实现
这五种排序算法难度依次增加. 冒泡排序: 第一次将数组相邻两个元素依次比较,然后将大的元素往后移,像冒泡一样,最终最大的元素被移到数组的最末尾. 第二次将数组的前n-1个元素取出,然后相邻两个元素依次 ...
- 排序算法之快速排序(java实现)
package com.javaTest300; public class Test039 { public static void main(String[] args) {// 快速排序 int ...
- 快速排序Java实现
package practice; import edu.princeton.cs.algs4.*; public class TestMain { public static void main(S ...
随机推荐
- git版本号回滚
先说今天遇到的问题,看到一个config.php的配置文件一直在改动的状态下,可是和远程的config.php是不一致的,我不须要提交它,可是看它在 modified的状态下,非常不爽.想删除它.gi ...
- 关于ubuntu下qt编译显示Cannot connect creator comm socket /tmp/qt_temp.xxx/stub-socket的解决的方法
今天在ubuntu下安装了qtcreator,准备測试一下能否用.果然一測试就出问题了,简单编写后F5编译在gnome-terminal中出现 Cannot connect creator comm ...
- pwd的实现
#include <string.h> #include <stdlib.h> #include <dirent.h> #include <sys/types ...
- Oracle中四种循环(GOTO、For、While、Loop)
DECLARE x number; BEGIN x:=9; <<repeat_loop>> --循环点 x:=x-1; DBMS_OUTPUT.PUT_LINE(X); IF ...
- iOS 史上最全的图片压缩方法集合
做上传图片功能,特别是类似于微信,QQ里面,公布9张图片, 少不了碰到一个问题,就是图片压缩问题,当然我也遇到了. 我研究了这个问题,发现网上普遍的方法是例如以下 //压缩图片质量 +(UIImage ...
- 1T文件夹 - 微云
1T文件夹 - 微云 1T文件夹
- Android 动态生成布局 (多层嵌套)
Android 除了能够载入xml文件,显示布局外,也能够代码生成布局,并通过setContentView(View view)方法显示布局.单独的一层布局,如一个主布局加一个控件(如Button\i ...
- rm -vf `ls |egrep -v "info_20130826-180233.31764|QueryParser.INFO"`
> rm -vf `ls |egrep -v "info_20130826-180233.31764|QueryParser.INFO"`
- coding.net解决github上下载速度慢问题
由 于众所周知的原因,从github下载项目很慢,一般不超过10kb(我的是20兆公司网)例如我下载OpenRefine,没有3个小时搞不定.所以想 到了一个方法来解决他.就是使用国内其他代码托管平台 ...
- XML,Object,Json分析转换Xstream采用
XML,Object,Json转换之浅析Xstream的使用 请尊重他人的劳动成果,转载请注明出处:XML,Object,Json转换之浅析Xstream的使用 XStream的是一个简单的库.主要用 ...