快速排序是对冒泡排序的一种改进,其排序速度相对较快。

基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据要小,然后再按照这个方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列的目的。最坏情况的时间复杂度为O(N ^ 2),最好为O(nlog2n)。

快速排序的实现过程:假设要排序的数组是A [1] ... A [N],首先任意选取一个数据(通常选取第一个数据)作为关键数据,然后将所有比他小的数放在前面,所有比他大的放在后面,这个过程称为一次快速排序。一趟快速排序的算法是:

  1. 设置两个变量I,J,排序开始的时候I:= 1,J:= N;
  2. 以第一个数群元素作为关键数据,赋值给X,即X:= A [1];
  3. 从J开始向前搜索,即由后开始向前搜索(J:= J-1),找到第一个小于X的值,两者交换;
  4. 从I开始向前搜索,即由前开始向后搜索(I:= I + 1),找到第一个大于X的值,两者交换;
  5. 重复第3,4步,直到I =学家
public class quickSort {public static void main(String[] args) {// TODO Auto-generated method stubint[] intArray = {12,11,45,6,8,43,40,57,3,20};System.out.println("排序前的数组:");for(int i=0;i<intArray.length;i++) {System.out.print(" "+intArray[i]);      //输出数组元素if((i+1)%5==0)               //每5个元素一行System.out.println();}System.out.println();int[] b = quickSort(intArray,0,intArray.length-1);     //调用quickSortSystem.out.println("使用快速排序法后的数组:");for(int i=0;i<b.length;i++) {System.out.print(" "+b[i]);if ((i+1)%5==0) {          //每5个元素一行System.out.println();}}}private static int[] quickSort(int[] array, int left, int right) { //快速排序法// TODO Auto-generated method stub//如果开始点和结束点没有重叠的时候,也就是指针没有执行到结尾if (left<right-1) {int mid = getMiddle(array,left,right);                //重新获取中间点quickSort(array,left,mid-1);quickSort(array,mid+1,right);}return array;}private static int getMiddle(int[] array, int left, int right) {// TODO Auto-generated method stubint temp;int mid = array[left];                        //把中心置于a[0]while(left < right) {while(left < right && array[right] >= mid)right--;temp = array[right];                   //将比中心点小的数据移到左边array[right] = array[left];array[left] = temp;while(left < right && array[left] <= mid)left++;temp = array[right];                   //将比中心点大的数据移到右边array[right] = array[left];array[left] = temp;}array[left] = mid;                         //中心移到正确位置return left;                              //返回中心点}}

Java 实现快速排序法对数组进行排序相关推荐

  1. 选择排序法对数组进行排序

    package selectionSort;import java.util.Arrays;public class Exam { //使用选择排序法对数组进行排序public static void ...

  2. 快速排序: 使用快速排序算法对数组进行排序

    快速排序: 使用快速排序算法对数组进行排序 题目 一个数组有 N 个元素,使用快速排序对其进行排序输出(本题还会人工阅卷,请使用快速排序算法进行排序) 输入描述: 输入为两行. 第一行一个整数n(1 ...

  3. java冒泡排序法对数组进行排序

    public class test_BubbleSort {public static void main(String[] args) {//冒泡排序int[] arr = new int[]{5, ...

  4. java冒泡排序 快速排序_Java必备-冒泡排序,选择排序,快速排序(纯代码实现)

    importjava.util.Arrays;/*** 是将无序a[0],a[1]...a[n],将其升序排序,比较a[0].a[1]的值,若结果为1,则交换两者的值,否则不变,接着继续向下比较.最后 ...

  5. java实现快速排序法

    快速排序是一种冒泡排序,只是把将要排序的数据分成了两组,然后通过冒泡排序进行排序,然后左边的数通过递归再次排序,右边也一样通过递归两次排序,最后得到结果. 图解: package com.demo.s ...

  6. [Java]应用冒泡排序法对数组进行升序排列

    [冒泡排序]的思想是比较相邻的元素的值,如果满足条件就交换值. 这里以降序排列为例:如果前面一个元素大于后面一个元素,就交换两者的值,这样一来,大的值就会后移,而较小的值会移动到数组的前面,一轮过后, ...

  7. 【重温基础算法】内部排序之快速排序法

    内部排序之快速排序法 文章目录 内部排序之快速排序法 主要思想 过程演示 JAVA代码 算法分析 时间复杂度分析 最好时间复杂度 最坏时间复杂度 平均时间复杂度 空间复杂度 对冒泡排序的一种优化 主要 ...

  8. 快速排序法 Java实现

    快速排序法又叫二分法排序: import java.util.Random;public class Quicksort {public static void main(String[] args) ...

  9. java实现数组排序代码_Java使用选择排序法对数组排序实现代码

    编写程序,实现将输入的字符串转换为一维数组,并使用选择排序法对数组进行排序. 思路如下: 点击"生成随机数"按钮,创建Random随机数对象: 使用JTextArea的setTex ...

最新文章

  1. linux系统安装后优化
  2. python 批量下载文件
  3. 计算机二级各个科目的区别,计算机二级考试的各个科目的内容及区别.doc
  4. Tomcat配置JNDI数据源
  5. 国内厂商 Onyx 违反 GPL 协议,中国开源何去何从?
  6. CVPR 2022 | 针对目标检测的重点与全局知识蒸馏(FGD)
  7. Python模拟分析演员之间亲密程度
  8. (四)Locust no-web模式
  9. Linux下用多种模式实现双网卡绑定!
  10. mvc:view-controller
  11. python爬虫-- 爬取51job网招聘信息
  12. EXPRESS语言与IFC体系
  13. 工业级交换机芯片选择的注意事项
  14. C语言 一步步教你做一个带有图形界面的冒险小游戏
  15. 应用于音箱领域中的音频功放IC型号推荐
  16. JavaFX学习之道:布局面板之 HBox
  17. 有一个美女程序媛是一种什么样的体验,分享一下她所推荐的学习资料给你
  18. mysql数据库历史语句提取_如何从MySQL数据库的不同表中提取创建语句?
  19. 关于S32K148LQFP144时钟配置的问题
  20. 达拉崩吧的酒宴 | 感受算法的魅力

热门文章

  1. 学计算机专业开学要买笔记本电脑吗,大一新生刚开学,有必要带电脑吗?辅导员给出的建议很中肯...
  2. 利用PyQt5制作简易二维码生成器
  3. wifi udp android,Android开启热点进行UDP通信中的坑
  4. java中获取当前日期
  5. EVE-NG 连接ASA ASDM
  6. GWO灰狼优化算法以及Matlab代码
  7. 音视频工程企业专项资质证书
  8. MATLAB实现PCA算法
  9. php里的天花板,什么是天花板和穹顶的艺术
  10. 阴阳师2017 7服务器维护,阴阳师7月22日正式服务器更新维护公告