Java 实现快速排序法对数组进行排序
快速排序是对冒泡排序的一种改进,其排序速度相对较快。
基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据要小,然后再按照这个方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列的目的。最坏情况的时间复杂度为O(N ^ 2),最好为O(nlog2n)。
快速排序的实现过程:假设要排序的数组是A [1] ... A [N],首先任意选取一个数据(通常选取第一个数据)作为关键数据,然后将所有比他小的数放在前面,所有比他大的放在后面,这个过程称为一次快速排序。一趟快速排序的算法是:
- 设置两个变量I,J,排序开始的时候I:= 1,J:= N;
- 以第一个数群元素作为关键数据,赋值给X,即X:= A [1];
- 从J开始向前搜索,即由后开始向前搜索(J:= J-1),找到第一个小于X的值,两者交换;
- 从I开始向前搜索,即由前开始向后搜索(I:= I + 1),找到第一个大于X的值,两者交换;
- 重复第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 实现快速排序法对数组进行排序相关推荐
- 选择排序法对数组进行排序
package selectionSort;import java.util.Arrays;public class Exam { //使用选择排序法对数组进行排序public static void ...
- 快速排序: 使用快速排序算法对数组进行排序
快速排序: 使用快速排序算法对数组进行排序 题目 一个数组有 N 个元素,使用快速排序对其进行排序输出(本题还会人工阅卷,请使用快速排序算法进行排序) 输入描述: 输入为两行. 第一行一个整数n(1 ...
- java冒泡排序法对数组进行排序
public class test_BubbleSort {public static void main(String[] args) {//冒泡排序int[] arr = new int[]{5, ...
- java冒泡排序 快速排序_Java必备-冒泡排序,选择排序,快速排序(纯代码实现)
importjava.util.Arrays;/*** 是将无序a[0],a[1]...a[n],将其升序排序,比较a[0].a[1]的值,若结果为1,则交换两者的值,否则不变,接着继续向下比较.最后 ...
- java实现快速排序法
快速排序是一种冒泡排序,只是把将要排序的数据分成了两组,然后通过冒泡排序进行排序,然后左边的数通过递归再次排序,右边也一样通过递归两次排序,最后得到结果. 图解: package com.demo.s ...
- [Java]应用冒泡排序法对数组进行升序排列
[冒泡排序]的思想是比较相邻的元素的值,如果满足条件就交换值. 这里以降序排列为例:如果前面一个元素大于后面一个元素,就交换两者的值,这样一来,大的值就会后移,而较小的值会移动到数组的前面,一轮过后, ...
- 【重温基础算法】内部排序之快速排序法
内部排序之快速排序法 文章目录 内部排序之快速排序法 主要思想 过程演示 JAVA代码 算法分析 时间复杂度分析 最好时间复杂度 最坏时间复杂度 平均时间复杂度 空间复杂度 对冒泡排序的一种优化 主要 ...
- 快速排序法 Java实现
快速排序法又叫二分法排序: import java.util.Random;public class Quicksort {public static void main(String[] args) ...
- java实现数组排序代码_Java使用选择排序法对数组排序实现代码
编写程序,实现将输入的字符串转换为一维数组,并使用选择排序法对数组进行排序. 思路如下: 点击"生成随机数"按钮,创建Random随机数对象: 使用JTextArea的setTex ...
最新文章
- linux系统安装后优化
- python 批量下载文件
- 计算机二级各个科目的区别,计算机二级考试的各个科目的内容及区别.doc
- Tomcat配置JNDI数据源
- 国内厂商 Onyx 违反 GPL 协议,中国开源何去何从?
- CVPR 2022 | 针对目标检测的重点与全局知识蒸馏(FGD)
- Python模拟分析演员之间亲密程度
- (四)Locust no-web模式
- Linux下用多种模式实现双网卡绑定!
- mvc:view-controller
- python爬虫-- 爬取51job网招聘信息
- EXPRESS语言与IFC体系
- 工业级交换机芯片选择的注意事项
- C语言 一步步教你做一个带有图形界面的冒险小游戏
- 应用于音箱领域中的音频功放IC型号推荐
- JavaFX学习之道:布局面板之 HBox
- 有一个美女程序媛是一种什么样的体验,分享一下她所推荐的学习资料给你
- mysql数据库历史语句提取_如何从MySQL数据库的不同表中提取创建语句?
- 关于S32K148LQFP144时钟配置的问题
- 达拉崩吧的酒宴 | 感受算法的魅力