以上为思路。
总的来说,快速排序也是利用了分治法的思想。
基本步骤:1.先选择好合适的主元pivot,
2.然后再把比主元小的元素放到主元的左边(右边),把较大的元素放到主元的右边(左边),
3.接着再以主元为分界点,把数组分为两个部分,再分别对两边的数组重复第二步的操作,
4.最后便实现了有序排列。

快速排序的时间复杂度为O(NlgN),这是一种不稳定的排序方法。

以下代码实现

public static void quickSort(int arr[], int left, int right) {int index = partition(arr, left, right);if (left < index - 1)quickSort(arr, left, index - 1);if (index < right)quickSort(arr, index, right);}//以二分法的思路对数组分组private static int partition(int arr[], int left, int right){int i = left, j = right;int tmp;//以最左边、最右边、中间三个数的中位数为主元int pivot = findPivot(arr, left, (left+right)>>1, right);while (i <= j) {while (arr[i] < pivot)i++;while (arr[j] > pivot)j--;if (i <= j) {tmp = arr[i];arr[i] = arr[j];arr[j] = tmp;i++;j--;}}return i;}//确定主元private static int findPivot(int[] nums, int left, int mid, int right){if(nums[left] > nums[right]) {int temp = nums[left];nums[left] = nums[right];nums[right] = temp;}if(nums[left] > nums[mid]) {int temp = nums[left];nums[left] = nums[mid];nums[mid] = temp;}if(nums[mid] > nums[right]) {int temp = nums[right];nums[right] = nums[mid];nums[mid] = temp;}return  nums[mid];}

java实现快速排序相关推荐

  1. java实现快速排序算法

    排序算法传送: 排序算法--java实现冒泡排序 排序算法--java实现选择排序 排序算法--java实现直接插入排序 排序算法--java实现二分法排序 排序算法--java实现希尔排序 排序算法 ...

  2. JAVA实现-快速排序

    JAVA实现-快速排序 高快省的排序算法 有没有既不浪费空间又可以快一点的排序算法呢?那就是"快速排序"啦!光听这个名字是不是就觉得很高端呢. 假设我们现在对"6 1 2 ...

  3. 使用 Java 实现快速排序(详解)

    一.概述 最近在看一些面试题,发现很多面试过程中都会要求手写快速排序,查阅一些博客发现别人写的并不是特别清楚而且也很难记住,所以为了更好的掌握这个算法,所以在这篇文章中,将自己的学习过程记录下来,你将 ...

  4. java nodelist 快速排序,【Leetcode】Sort List in java,你绝对想不到我是怎么做的^^我写完过了我自己都觉得好jian~...

    Sort a linked list inO(nlogn) time using constant space complexity. 大家看完题目估计跟我一样啦...都在想哪些是nlogn啊~快速排 ...

  5. java里面快速排序_Java:快速排序

    快速排序相当于冒泡排序的进化版本,优点是速度比冒泡排序更快,缺点是写起来逻辑比冒泡排序啰嗦一点,没那么直观. 快速排序之所以比较快,是因为相比冒泡排序,每次交换是跳跃式的.每次排序的时候 设置一个基准 ...

  6. Java实现快速排序 Quick Sort

    本文带来八大排序算法之快速排序算法. 快速排序(QuickSort)是对冒泡排序的一种改进.基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据都要小, ...

  7. Java【快速排序、插入排序、简单选择排序...】【八大排序-综合实验】

    目   录 1.快速排序 1.1.概念+举例 1.2.完整代码 2.插入排序 2.1.概念+举例 2.2.完整代码 3.简单选择排序 3.1.概念+举例 3.2.完整代码 4.3种排序-综合代码 4. ...

  8. 分治法在排序算法中的应用(JAVA)--快速排序(Lomuto划分、Hoare划分、随机化快排)

    分治法在排序算法中的应用--快速排序 时间复杂度:平均O(nlogn),最坏O(n^2) 如果说归并排序是按照元素在数组中的位置划分的话,那么快速排序就是按照元素的值进行划分.划分方法由两种,本节将主 ...

  9. JAVA简单快速排序讲解

    首先,我们来了解一下什么是快速排序: 所谓快速排序,就是在冒泡排序的基础上进行改进,延伸出来的一种跳跃性的排序方法,我们都知道,冒泡排序,就是相邻两个数之间进行比较,然后根据情况(从小到大,从大到小) ...

  10. java版快速排序详解

    package day04; /*** 关于快速排序的理解* 快速排序本质上通过一个数组划分为两个子数组,然后递归地调用自身为每一个子数组进行快速排序来实现的,即算法分为三步:* * 1.首先从数组中 ...

最新文章

  1. [转]python3之模块psutil系统性能信息
  2. 导出数据库报错 EXP-00002: 写入导出文件时出错 EXP-00000: 导出终止失败
  3. (Deep learning)深度卷积网络实战——第三部分
  4. 为什么c语言一用windows.h就报错_C代码里面加一行网址依然可以运行,并不会报错,为何...
  5. python增强运算符_Python学习【第3篇】:Python之运算符
  6. String 转Clob
  7. 项目记事【SpringMVC-1】:后台接收前端传来的JSON,并转成对象
  8. Sequence of methods in form and table in AX
  9. CentOS6.5 linux 逻辑卷管理 调整分区大小
  10. 超级搜索术6-问题驱动/系统思维
  11. python语言就业方向_Python语言十大就业方向!老男孩教育
  12. 再不奋斗,我们就老了!
  13. oracle 三表关联查询
  14. GoDaddy3月份域名注册量达到3千多万 色情功不可没
  15. 热点推荐:程序员“奇葩”说
  16. Sun Java认证考试介绍
  17. Linux 有/无设备树下 platform_driver 驱动框架
  18. 【软件测试 #4】QA、QC、QM的区别
  19. “打印机故障”,我的解决方案
  20. 高效能人士的执行四原则(二)——原则1:聚焦最重要目标

热门文章

  1. DTCMS插件的制作实例电子资源管理(四)URL重写
  2. Ubuntu系统在VMware虚拟机中显示显示过小
  3. Android 操作串口 (android serial port api)
  4. 虚拟化 - 每天5分钟玩转 OpenStack(2)
  5. 自适应游标共享技术01(Adaptive Cursor Sharing)
  6. Microsoft Dynamics CRM 2013 试用之系统篇 正式安装 Microsoft Dynamics CRM Server 2013
  7. Windows phone 7新开发工具发布
  8. Ruby系统中的AJAX开发技术简析
  9. python爬取站长素材网页图片保存到ppt中
  10. 清明是品茗的好时节,那么你了解quot;明前茶quot;吗?