快速排序    平均时间复杂度  O(NlogN)  最差时间复杂度O(N*N)   不稳定

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

 /** * 1.先从数列中取出一个数作为基准数。 * 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。 * 3.再对左右区间重复第二步,直到各区间只有一个数。 * 时间复杂度为O(nlog n) * 不稳定排序方式 */
public class quickSort {public static int[] sort(int[] data, int left, int right){if (left < right) {int mid = partition(data, left, right);sort(data, left, mid - 1);   //左边sort(data, mid + 1, right);  //右边}return data;///返回}public static int partition(int[] data, int left, int right) {int x = data[left];//基准数  int i = left;int j = right;if (left < right) {while (i < j) {while ((i<j) && (data[j] >= x)) {j--;}if (i < j){data[i++] = data[j];}while ((i<j) && (data[i] < x)) { //从左边第一个小于x的数i++;}if (i < j) {data[j--] = data[i];}}data[i] = x;}return i;}public static void main(String[] args) {  int[] data = {4, 7, -4, 13, 6, 6, 18, 10, 85, 94};  quickSort.sort(data, 0, data.length - 1);}
}

排序算法之快速排序(Java)相关推荐

  1. 桶排序算法(基于Java实现)

    title: 桶排序算法(基于Java实现) tags: 桶排序算法 桶排序算法的原理和代码实现 一.桶排序算法的原理 桶排序,顾名思义,会用到"桶",核心思想是将要排序的数据分到 ...

  2. 十大排序算法之快速排序(两种方法)

    十大排序算法之快速排序 本文采用Java书写选择排序,其他语言类似可以借鉴着写 思想:在待排序序列中选择一个分割元素,将待排序序列中所有比分割元素关键字小的元素移动到分割元素左侧位置:将待排序序列中所 ...

  3. java 奇偶数据排序算法,简单讲解奇偶排序算法及在Java数组中的实现

    简单讲解奇偶排序算法及在Java数组中的实现 奇偶排序是一个比较有个性的排序,基本思路是奇数列排一趟序,偶数列排一趟序,再奇数排,再偶数排,直到全部有序 举例吧, 待排数组 [6 2 4 1 5 9] ...

  4. 排序算法总结和java实现

    排序算法总结和java实现 0.排序算法说明 0.1 排序的定义 0.2 术语说明 0.3 算法总结 0.4 算法分类 0.5 比较和非比较的区别 1.冒泡排序 1.1 算法描述 1.2 动图演示 1 ...

  5. 选择排序算法(基于Java实现)

    title: 选择排序算法(基于Java实现) tags: 选择算法 选择排序算法原理及代码实现: 一.选择排序算法的原理 选择排序算法的实现思路有点类似插入排序,也分已排序区间和未排序区间.但是选择 ...

  6. 排序算法之----快速排序(快速上手快速排序)

    排序算法之----快速排序(快速上手快速排序) 何为快速排序算法? 快速排序的基本思想又是什么? 其实很简单: 快速排序的基本思想是 1.先从数列中取出一个数作为基准数(这里我们的算法里面取数组最右边 ...

  7. 插入排序算法 java_排序算法实现-插入排序(Java版本)

    原标题:排序算法实现-插入排序(Java版本) 插入排序(英语:Insertion Sort)是一种简单直观的排序算法.它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到 ...

  8. php1到5000排序,常用的排序算法(一)--快速排序(PHP实现)

    常用的排序算法系列 快速排序 假设当前需要从小到大进行排序,快速排序的核心思路是,从当前数组中,找到一个元素作为基准比较值(key),分别从两个方向进行比较.从后往前找,比key小元素放在数组前面.然 ...

  9. 排序算法(5)快速排序

    排序算法(5)快速排序 思想:递归,分治法. 1.先从数列中取出一个数作为基准数. 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边. 3.再对左右区间重复第二步,直到各区 ...

最新文章

  1. 零基础学编程学java还是python-零基础学编程,Java和Python你pick谁?
  2. matlabrobert锐化_Matlab图像处理—锐化滤波器
  3. 【Python】身体质量指数BMI
  4. 设计模式札记——单例模式(Singleton Pattern)
  5. linux 信号量锁 内核,Linux内核信号量互斥锁应用
  6. mysql分表的原则_分库分表原则 总结
  7. Python压缩解压–zipfile
  8. 整车车辆七自由度垂向动力学模型
  9. 复合型网络拓扑结构图_计算机网络拓扑结构图的种类及图示
  10. 微信公众平台消息管理与群发图文教程
  11. java socket远空_JAVA Socket超时浅析
  12. 画布和画笔绘制五子棋
  13. 随笔:说说第一次在android中嵌入非全屏显示的unity游戏时的坑之——界面切换时出现延迟/卡顿/花屏等现象解决方法
  14. 程序猿职业规划-分析篇
  15. 一个 epoll 连接句柄定时管理器
  16. .Net 6.0中的新增特性_.Net 6.0中的新增功能
  17. Mac删除默认美国输入法
  18. PSINS中地球自转角速度投影与牵连角速度的计算公式与代码
  19. 印尼爪哇岛的火山(图)
  20. AlexNet论文解读与代码实现

热门文章

  1. iOS CAGradientLayer颜色渐变
  2. Memcached常用操作
  3. 研究人员发现Office Word 0Day攻击 这个漏洞绕过了word宏安全设置 绿盟科技、McAfee及FireEye发出警告...
  4. SQL Server-数据类型(七)
  5. 超棒的视差滚动效果javascript类库 - Jarallax
  6. 亲试白天使:华硕家用级无线路由RT-N11+
  7. HashMap30连问,彻底搞懂HashMap
  8. python 中如何判断list中是否包含某个元素
  9. webserver接口_SpringBoot内置源码解析WebServer初始化过程
  10. Django之创建应用以及配置路由