快速排序基本思想、实例讲解及Java实现代码

文章介绍了快速排序的基本思想、实现步骤和Java实现代码。

快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。

快速排序是一种不稳定的排序算法。

快速排序的基本思想是

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

快速排序的实现方法

1.先从数列中取出一个数作为基准数。

2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。

3.再对左右区间重复第二步,直到各区间只有一个数。

快速排序基本思想、实例讲解及Java实现代码

快速排序Java实现代码

public class QuickSort {
 public static void main(String[] args) {
  int [] array = {49,38,65,97,76,13,27};
  quickSort(array, 0, array.length - 1);
  for (int i = 0; i < array.length; i++) {
   System.out.println(array[i]);
  }
 }
 /*先按照数组为数据原型写出算法,再写出扩展性算法。数组{49,38,65,97,76,13,27}
  * */
 public static void quickSort(int[]n ,int left,int right){
  int pivot;
  if (left < right) {
   //pivot作为枢轴,较之小的元素在左,较之大的元素在右
   pivot = partition(n, left, right);
   //对左右数组递归调用快速排序,直到顺序完全正确
   quickSort(n, left, pivot - 1);
   quickSort(n, pivot + 1, right);
  }
 }
 
 public static int partition(int[]n ,int left,int right){
  int pivotkey = n[left];
  //枢轴选定后永远不变,最终在中间,前小后大
  while (left < right) {
   while (left < right && n[right] >= pivotkey) --right;
   //将比枢轴小的元素移到低端,此时right位相当于空,等待低位比pivotkey大的数补上
   n[left] = n[right];
   while (left < right && n[left] <= pivotkey) ++left;
   //将比枢轴大的元素移到高端,此时left位相当于空,等待高位比pivotkey小的数补上
   n[right] = n[left];
  }
  //当left == right,完成一趟快速排序,此时left位相当于空,等待pivotkey补上
  n[left] = pivotkey;
  return left;
 }
}

125jz网原创文章。发布者:江山如画,转载请注明出处:http://www.125jz.com/11175.html

(0)
江山如画的头像江山如画管理团队
上一篇 2022年12月1日 上午10:51
下一篇 2022年12月1日 下午1:48

99%的人还看了以下文章

  • 第3课:C语言程序的构成和书写规则

    先来看一个C语言程序:输入两个正整数,计算并输出两数的和。 程序代码: /*ex1_2.c:求两个正整数的和*/ #include <stdio.h> void main()                         /*主函数*/ {     int a,b,sum;                    /*定义三个整型变量*/    …

    2020年4月5日
    4.1K0
  • 动态网站开发技术asp、asp.net、php、jsp比较

    asp、asp.net、php、jsp技术简介 ASP 全称为Active Server Pages(中文译名为活动服务器页面),是微软公司推出的用于Web应用服务的一种编程技术.采用的脚本语言: VBScript 和JavaScript。 ASP.NET 微软公司很快公布了其宏伟的“Windows.NET”计划,发布了成为下一代网络服务框架的NGWS,同时…

    2018年3月15日
    2.5K0
  • 两个简单的Pycharm激活方法分享

    一、Pycharm激活码激活 优点:Window、Mac、Ubantu都稳定有效,关键是这种激活方式不会产生其他影响 缺点:需要修改hosts文件 修改hosts文件 将0.0.0.0 account.jetbrains.com添加到hosts文件最后,注意hosts文件无后缀,如果遇到无法修改或权限问题,可以采用覆盖的方法去替换hosts文件 修改后请检查…

    2020年3月14日
    3.3K0
  • Robotstudio示教编程与仿真运行教程

    Robotstudio软件中内置的虚拟示教器与真实的工业机器人示教器没有任何区别,对于学习ABB机器人现场示教编程的,可以在基础工作站中进行学习使用。

    2022年5月3日 编程开发
    4.7K0
  • 最全的数据结构排序算法实现及比较

    冒泡排序 类似暴力破解,1 – n 个,每个都比较一次。完成排序 public void sort(int[] arr) { int len = arr.length; for (int i = 0; i < len; i++) { for (int j = i + 1; j < len – 1; j++) { if (arr[i] …

    2020年10月13日
    2.4K0
  • HTTP错误 403.14 服务器配置为不列出此目录内容

    开发一个企业网站,使用ASP技术,在本地通过IIS管理器调试,出现 如下问题: HTTP 错误 403.14 – Forbidden Web 服务器被配置为不列出此目录的内容 解决方法: 在”功能视图“,中找到”目录浏览“,双击进入 在目录浏览右侧操作中选择”启用“! 这时再浏览网站,可以看到已经不报错了,但是网站是以文件目录的形式展现的! 这是…

    2018年7月3日 编程开发
    3.5K0

发表回复

登录后才能评论