快速排序(Quicksort)是对冒泡排序的一种改进。

1、基本思想

通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以 递归进行,以此达到整个数据变成有序序列。

2、算法描述

快速排序使用分治策略来把一个序列( list )分为两个子序列(sub-lists)。步骤为:

①.从数列中挑出一个元素,称为基准(pivot)。

②.重新排序数列,所有比基准值小的元素摆放在基准前面,所有比基准值大的元素摆在基准后面(相同的数可以到任一边)。在这个分区结束之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。

③. 递归地(recursively)把小于基准值元素的子数列和大于基准值元素的子数列排序。

递归到最底部时,数列的大小是0或1,也就是已经排序好了。这个算法一定会结束,因为在每次的迭代(iteration)中,它至少会把一个元素摆到它最后的位置去。

3、代码实现

public classQuicklySort {public static voidmain(String[] args) {

Long startTime=System.currentTimeMillis();//int[] array = new int[]{10, 1, 9, 2, 8, 3, 7, 4, 6, 5};

int[] array = new int[100000];for (int i = 0; i < 100000; i++) {

array[i]= (int) (Math.random() * 100000);

}

quicklySort(array,0, array.length - 1);

Long endTime=System.currentTimeMillis();

System.out.println(endTime-startTime);

}public static void quicklySort(int[] array, int low, inthigh) {if (null == array || array.length <= 0) {return;

}if (low >=high )

{return;

}int left =low;int right =high;int key =array[left];while (left

while (left < right && array[right] >=key) {

right--;

}while (left < right && array[left] <=key) {

left++;

}if (left

swap(array, left, right);

}

}

swap(array, low, left);//System.out.println(Arrays.toString(array));

quicklySort(array, low, left - 1);

quicklySort(array, left+ 1, high);

}private static void swap(int array[], int low, inthigh) {int tmp =array[low];

array[low]=array[high];

array[high]=tmp;

}

}

View Code

java 7个数排序_7 Java 快速排序相关推荐

  1. java中的排序方法,Java中的排序比较方式:自然排序和比较器排序

    这里所说到的Java中的排序并不是指插入排序.希尔排序.归并排序等具体的排序算法.而是指执行这些排序算法时,比较两个对象"大小"的比较操作.我们很容易理解整型的 i>j 这样 ...

  2. java三个数排序从小到大,键盘输入三个数,实现从小到大排序,键盘输入从小到大...

    键盘输入三个数,实现从小到大排序,键盘输入从小到大 // 导包 import java.util.Scanner; public class Sort { public static void mai ...

  3. java 7个数排序_JAVA基础(7)-数组的排序

    数组的排序 冒泡排序的基本思想: 原理:比较两个相邻的元素,将值大的元素交换至右端. 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一趟:首先比较第1个和第2个数,将小数放前,大数放 ...

  4. Java回炉之排序算法

    Java回炉之排序算法 Java回炉之排序算法 冒泡排序 插入排序 归并排序 快速排序 希尔排序 选择排序 堆排序 冒泡排序 一次次遍历数组,每次比较相邻两个. 两重循环,内层比较index和inde ...

  5. 排序算法python实现_合并排序算法– Java,C和Python实现

    排序算法python实现 Merge sort is one of the most efficient sorting algorithms. It works on the principle o ...

  6. 排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序...

    先推荐一篇关于排序算法的文章:http://www.cppblog.com/guogangj/archive/2009/11/13/100876.html 本文思路部分来源于上篇文章,但测得的结果似乎 ...

  7. java 快速排序算法简单_排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序......

    先推荐一篇关于排序算法的文章:http://www.cppblog.com/guogangj/archive/2009/11/13/100876.html 本文思路部分来源于上篇文章,但测得的结果似乎 ...

  8. Java黑皮书课后题第6章:*6.5(对三个数排序)使用下面的方法头编写方法,按升序显示三个数

    *6.5(对三个数排序)使用下面的方法头编写方法,按升序显示三个数 题目 题目概述 破题 代码:排序 运行结果 题目 题目概述 *6.5(对三个数排序)使用下面的方法头编写方法,按升序显示三个数: p ...

  9. java线程实现排序_【多线程实现快速排序】

    快速排序算法实现文件QuickSort.java package quick.sort; import java.util.concurrent.Callable; import java.util. ...

最新文章

  1. C++ SSE运算例子
  2. 网络推广外包浅析当下网站优化处于健康状态有利于网络推广外包
  3. java实现单向链表
  4. java 学习知识汇总
  5. OC-数组排序-NSSortDescriptor使用
  6. vs2012常用快捷键总结
  7. 程序员过关斩将--少年派登录安全的奇幻遐想
  8. 你与数据科学家只差这26条python技巧
  9. linux查看pid 对应的程序_资深程序员总结:分析 Linux 进程的 6 个方法,我全都告诉你...
  10. 移动app测试的多样性_移动App测试一些崩溃原因及触发崩溃的场景
  11. springcloud 微服务鉴权_推荐 1w+ 星标的 SpringCloud 微服务项目,开发脚手架
  12. 前言-小迪web安全渗透培训视频笔记
  13. aforge java_C#使用Aforge调用摄像头拍照的方法
  14. 两波形相位差的计算值_连续模式PFC功率MOSFET电流有效值、平均值计算
  15. 斯特陵往事(转自清韵论坛 冯·迪特里施专栏)
  16. MFC 绘制 PNG 格式图片
  17. 浩哥的Linux学习笔记之cp命令
  18. 中国开发者将迎来黄金十年
  19. 启用计算机来宾账号,开启Windows 10来宾账户
  20. css选择器(id选择器)

热门文章

  1. EditPlus运行java时如何从键盘输入数据
  2. 基于Python-turtle库绘制哆啦A梦
  3. Ubuntu报错:E: The repository http://ppa.launchpad.net/fcitx-team does not have a Release file.
  4. Ubuntu18.04编译Android7.1.2源码(刷机Pixel)
  5. Android查看wakeLock调用情况
  6. Bluetooth---如何使用Android蓝牙开发
  7. Android APK系列4-------Android编译APK后的系统结构
  8. Vue项目中使用浏览器同步测试工具 browersync
  9. 宽带服务器盒信号灯红色闪烁,宽带出现光信号灯是红色是怎么回事
  10. 怎么看待传菜机器人_比拼食材原料、使用机器人传菜,餐饮业如何把握大消费时代的机遇...