快速排序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 ...
随机推荐
- 一个用 C 语言写的迷你版 2048 游戏,仅仅有 500个字符
Jay Chan 用 C 语言写的一个迷你版 2048 游戏,仅仅有 487 个字符. 来围观吧 M[16],X=16,W,k;main(){T(system("stty cbreak&qu ...
- Eclipse Tips
一.取消拼写检查 Window -> Preferences -> General -> Editors -> Text Editors -> Spelling -> ...
- swfupload组件后台获取中文文件名称乱码的问题解决
问题描写叙述:用swfupload上传文件,含有中文名称的文件上传会报错,我用的是获取FileItem对象,用FileItem对象的getName()方法获取文件名会乱码,试着用request. ...
- poj 2411 Mondriaan's Dream dp
一个比较简单的状压dp,记录下每个点的状态即可. #include <iostream> #include <cstdio> #include <cstring> ...
- make工具与Makefile文件
make工具与Makefile文件 阅读目录 1. make工具 2. Makefile文件 3. Makefile的简单示例 4. 伪目标 5. Makefile 自动化变量 6. 编译生成多个可执 ...
- JavaScript 中的事件类型2(读书笔记思维导图)
Web 浏览器中可能发生的事件有很多类型.如前所述,不同的事件类型具有不同的信息,而“ DOM3级事件”规定了以下几类事件: UI(User Interface,用户界面)事件:当用户与页面上的元素交 ...
- 【VBA研究】查找目录以下全部文件的名称
作者:iamlaosong 目录里面保存有面单扫描的图像文件,文件名称为邮件号码.如今想收集这些邮件号码,由于量非常大,不可能一个一个的截取,仅仅能通过程序实现.假定,当前工作表B列里放的是存放这些图 ...
- 【剑指offer】约瑟夫环问题
转载请注明出处:http://blog.csdn.net/ns_code/article/details/27957407 题目描写叙述: 每年六一儿童节,JOBDU都会准备一些小礼物去看望孤儿院的小 ...
- 提领NULL指针
通常之中导致程序崩溃的最重要的原因是试图取消引用NULL指针.正如在以前的文章中指出,智能指针RefCountPtr和ScopedPtr它提供了一个诊断的执行时间. 但,并不是所有的指针是所有的对象都 ...
- Android 监听SMS短信
当设备接收到一条新的SMS消息时,就会广播一个包括了android.provider.Telephony.SMS_RECEIVED动作的Intent. 注意,这个动作是一个字符串值,SDK 1.0不再 ...