一步一步搞清排序之快速排序(JAVA)
来源:互联网 发布:淘宝售后服务怎么做 编辑:程序博客网 时间:2024/05/18 06:26
前言:快速排序应该是最经典的排序之一了,无论是学生时代的考试还是找工作时的面试,总会有快速排序的身影。虽然原理简单,但很有必要落到实处实现它。
原理:(以非降序为例)快速排序最基本的思想就是以选中的基准数为基础,将比该元素大的元素统一放在该元素的右边,比其小的放在其左边。这样一轮结束后,该基准元素的位置就确定了。接下来就分别递归处理左右部分的数据。
步骤:
1:选取基准数(这个可以随机选,本例选第一个元素)
2:选取定位元素 i 、j,i 表示从最左边开始的索引值,j表示从最右边开始的索引值。
3:i 开始向前寻找,遇到比基准数大的值时停下。
4:j 开始向后寻找,遇到比基准数小的值时停下。
5:若 i< j,则交换 i 、j 的元素值。
6:重复 3、4、5步骤,当 i>=j 时,搜索完毕,交换 j 与基准元素的值。
7:递归处理左右部分,直到子序列元素只剩下一个时,排序完成。
代码如下:
package com.zi.quick;import java.util.Arrays;import java.util.Scanner;public class Quick { public void swap(int[] a,int i,int j){ int temp = a[i]; a[i] = a[j]; a[j] = temp; } public void quick_sort(int[] a,int low ,int high){ if(low<high) { int i = low; int j = high + 1; int pivot = a[i]; while(true) { while(i<high&&a[++i]<=pivot); while(j>low&&a[--j]>=pivot); if(i<j) { swap(a, i, j); } else { break; } } swap(a, low, j); quick_sort(a, low, j-1); quick_sort(a, j+1, high); } } public static void main(String[] args) { Quick quick = new Quick(); Scanner scanner = new Scanner(System.in); int[] a = new int[10]; for(int n = 0; n<10;n++) { a[n] = scanner.nextInt(); } quick.quick_sort(a, 0, 9); System.out.println(Arrays.toString(a)); }}
0 0
- 一步一步搞清排序之快速排序(JAVA)
- 一步一步搞清排序之冒泡排序(JAVA实现)
- 一步一步搞清排序之插入排序(JAVA)
- 一步一步搞清排序之选择排序(JAVA)
- 一步一步搞清排序之堆排序(JAVA)
- 一步一步搞清排序之归并排序(JAVA)
- 一步一步写算法(之快速排序)
- 一步一步写算法(之快速排序)
- 一步一步写算法(之快速排序)
- java排序之快速排序(五)
- java排序之快速排序
- Java 排序之 快速排序
- java排序之快速排序
- Java 排序之 快速排序
- Java排序之【快速排序】
- java排序之 --- 快速排序
- 排序算法之快速排序、归并排序(java实现)
- 快速排序之Java
- 蓝桥杯2017模拟题-猜算式
- Android超长图片展示
- Android消息机制(二)
- 九度OJ 1450 产生冠军
- iOS10 iMessage带来了你需要的MessageExtension
- 一步一步搞清排序之快速排序(JAVA)
- linux连接跟踪
- php selenium测试百度输入和跳转
- 巨烦人的TLE
- 实现登录和注册功能【springboot mybatis学习与开发(三)】
- spark-jion优化
- 关于前端开发谈谈单元测试
- Android Study之跳转自启动管理页
- 查看linux中常用端口