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

//快速排序public static void quickSort(int[] arr){if (arr == null || arr.length < 2)return;quickSort(arr,0,arr.length-1);}public static void quickSort(int[] arr,int left,int right){if (left >= right)return;int i = left;int j = right;swap(arr, left + (int) (Math.random() * (right - left + 1)), right);int temp = arr[left]; //temp存的即为基准数while (i != j){while (arr[j]>=temp && i<j)j--;while (arr[i]<=temp && i<j)i++;if (i<j)swap(arr,i,j);}swap(arr,i,left);quickSort(arr,left,i-1);quickSort(arr,i+1,right);}public static void swap(int[] arr,int i,int j){int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}

排序算法(五):快速排序相关推荐

  1. 排序算法(五)——堆排序算法详解及Python实现

    本文目录 一.简介 二.算法介绍 三.代码实现 排序算法系列--相关文章 一.简介 堆排序(Heap Sort)算法,属于选择排序类,不稳定排序,时间复杂度O(nlogn). 堆排序由Floyd和Wi ...

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

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

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

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

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

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

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

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

  6. 【排序算法】快速排序(C语言)

    [排序算法]-- 快速排序 目录 一.快速排序的单趟排序 1. 霍尔法 2. 挖坑法 3. 前后指针 二.快速排序 1. 排序步骤 2. 排序完整步骤图 3. 快速排序代码 3.1 递归实现 3.2 ...

  7. 《数据结构与算法》(二十五)- 排序算法:快速排序

    目录 前言 1. 快速排序 1.1 快速排序算法 1.2 快速排序算法复杂度分析 1.3 快速排序优化 2. 总结 原文地址:https://program-park.github.io/2021/1 ...

  8. 排序算法-04快速排序(Python实现)

    快速排序 性质 一种基本的交换排序算法,比较常用的排序算法,简称快排. 基本的排序思路如下.基本思想为:通过一趟排序将要排序的数据分割成独立的两部分,分割点左边的数都比它小,分割点右边的数都比它大,然 ...

  9. 冒泡和快速排序的时间复杂度_java 八大排序算法 冒泡排序 快速排序 堆排序 归并排序 等...

    八大排序算法 一.直接插入 1.基本思路 在要排序的一组数中,假设前面(n-1) [n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的.如此反复循环 ...

  10. 十大排序算法:快速排序算法

    一.快速排序算法思想或步骤 分解: 数组A[p-r]被划分为两个子数组A[p-q-1]和A[q+1-r],使得A[q]为大小居中的数,左侧A[p-q-1]中的每个元素都小于等于它,而右边A[q+1-r ...

最新文章

  1. mysql的骚操作:自增长的字段同时插入到另一个字段
  2. Burpsuite在Firefox中无法抓取DVWA本地数据包解决方案+导入证书
  3. 窗口句柄、窗口类对象的关系
  4. CTF基本赛制与题型
  5. python制作物联网控制软件下载_Python+树莓派制作IoT(物联网)门控设备
  6. Integer转BigDecimal
  7. mySQL | unrecognized service 错误解决办法
  8. 设计模式(行为型模式)——模板方法模式(Template Method)
  9. 大一python简答题_大学moocPython编程基础答案大全
  10. 斯坦福大学的 CS231n课程
  11. 初识阿里云环境搭建:无法远程连接,入过的坑:服务器ping不通,FTP搭建,服务器搭建数据库,远程连接服务器数据库
  12. 修改linux服务器密码
  13. 批量图片格式转化——gif转换为jpg、png
  14. wps怎么打包图片_wps如何压缩图片
  15. 7-1 六度空间(30 分)
  16. 最好用的jpg转pdf软件
  17. 3月21日短线黑马牛股公开验证
  18. PCB制板总结(AD制图)
  19. Drupal 常用模块汇总
  20. 什么是PHP?它的擅长领域是什么?它的工作原理是什么?

热门文章

  1. 【NIO】Selector
  2. hmm 求隐藏序列_统计学习方法--HMM回顾
  3. celeron处理器_显卡和处理器哪个更重要?
  4. 计算机在生物科学领域的应用论文,大学生物科学教学中计算机的应用
  5. 为什么源码编译安装mysql_从源码编译安装MySQL的步骤
  6. c语言ctype中替换查找字符,c – std :: ctype是否总是按“C”语言环境对字符进行分类?...
  7. C语言写一函数交换两变量的值
  8. html三个div相同高度,如何使用jquery保持多个div的高度相同?
  9. 脚本没有类似C语言的预编译,开源脚本库
  10. 编写程序将字符串中最长的单词输出