关于快速排序的Java代码实现
快速排序(Quicksort)是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
实现方式一:
 package test1;
 public class QuicSort {
     /*
      * 使用快速排序
      * arras:要排序的数组
      * low:数组的开始下标
      * hight:数组的末尾下标
      */
     public void sort(int[] arras,int low,int hight){
         int i = low;
         int j = hight;
         if(i>j){
             return ;
         }
         //基准元素
         int key = arras[low];
         while(true){//让一趟里面的全部元素都比较完毕
             //j往前走
             while(j>i){
                 if(arras[j] < key){
                     //交换
                     int temp = arras[j];
                     arras[j] = arras[i];
                     arras[i] = temp;
                     break;
                 }else{
                     j--;
                 }
             }
             //i往后走
             while(j>i){
                 if(arras[i] > key){
                     //交换
                     int temp = arras[j];
                     arras[j] = arras[i];
                     arras[i] = temp;
                     break;
                 }else{
                     i++;
                 }
             }
             if(i ==j){
                 break;
             }
         }
         //基准左边的数组排序
         sort(arras,low,i-1);
         //基准右边的数组排序
         sort(arras,i+1,hight);
     }
     /*
      * 打印数组里面的元素
      */
     public void print(int[] arras){
         for(int i=0 ; i<arras.length;i++){
             if(i==arras.length-1){
                 System.out.println(arras[i]);
             }else{
                 System.out.print(arras[i]+",");
             }
         }
     }
     public static void main(String[] args) {
         int[] as = {49,38,65,97,76,13,27};
         QuicSort qs = new QuicSort();
         qs.sort(as,0,as.length-1);
         qs.print(as);
     }
 }
实现方式二:
 package test1;
 public class QuickSort1 {
     int a[] = { 49, 38, 65, 97, 76, 13, 27, 49, 78, 34, 12, 64, 5, 4, 62, 99,
             98, 54, 56, 17, 18, 23, 34, 15, 35, 25, 53, 51 };
     public QuickSort1() {
         quick(a);
         for (int i = 0; i < a.length; i++)
             System.out.println(a[i]);
     }
     public int getMiddle(int[] list, int low, int high) {
         int tmp = list[low]; // 数组的第一个作为中轴
         while (low < high) {
             while (low < high && list[high] >= tmp) {
                 high--;
             }
             list[low] = list[high]; // 比中轴小的记录移到低端
             while (low < high && list[low] <= tmp) {
                 low++;
             }
             list[high] = list[low]; // 比中轴大的记录移到高端
         }
         list[low] = tmp; // 中轴记录到尾
         return low; // 返回中轴的位置
     }
     public void _quickSort(int[] list, int low, int high) {
         if (low < high) {
             int middle = getMiddle(list, low, high); // 将list数组进行一分为二
             _quickSort(list, low, middle - 1); // 对低字表进行递归排序
             _quickSort(list, middle + 1, high); // 对高字表进行递归排序
         }
     }
     public void quick(int[] a2) {
         if (a2.length > 0) { // 查看数组是否为空
             _quickSort(a2, 0, a2.length - 1);
         }
     }
 }
关于快速排序的Java代码实现的更多相关文章
- 常见的排序算法之Java代码解释
		
一 简要介绍 一般排序均值的是将一个已经无序的序列数据重新排列成有序的 常见的排序分为: 1 插入类排序 主要就是对于一个已经有序的序列中,插入一个新的记录.它包括:直接插入排序,折半插入排序和希尔排 ...
 - java 代码
		
java 里的 pandas tablesaw DataFrame 再有就是 spark 了 java 代码规范 Java8特性详解 lambda表达式 Stream Sonar 规则检测 sprin ...
 - 专题 查找与排序的Java代码实现(一)
		
专题 查找与排序的Java代码实现(一) 查找(Searching) 线性查找(linear search) 属于无序查找算法,适合于存储结构为顺序存储或链接存储的线性表. 基本思想:从数据结构线形表 ...
 - 快速排序的Java和python实现,亲测实际可用
		
1.基本思想 快速排序每趟排序确定一个元素x的位置,使用的方式是 将大于元素x的值放大x的右边,小于元素x的值放大x的左边.当确定x的位置之后,再分别对x左边的数组和右边的数组进行快速排序即可. 2. ...
 - 快速排序之Java实现
		
快速排序之Java实现 代码: package cn.com.zfc.lesson21.sort; /** * * @title QuickSort * @describe 快速排序 * @autho ...
 - 快排的java实现方式,用java代码来实现快排
		
1. 快排的思想 通过一趟排序将要排序的数据分割成独立的两部分,前一部分的所有数据都要小于后一部分的所有数据,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据的 ...
 - 十大经典排序算法最强总结(含JAVA代码实现)(转)
		
十大经典排序算法最强总结(含JAVA代码实现) 最近几天在研究排序算法,看了很多博客,发现网上有的文章中对排序算法解释的并不是很透彻,而且有很多代码都是错误的,例如有的文章中在“桶排序”算法中对每 ...
 - 对一致性Hash算法,Java代码实现的深入研究
		
一致性Hash算法 关于一致性Hash算法,在我之前的博文中已经有多次提到了,MemCache超详细解读一文中"一致性Hash算法"部分,对于为什么要使用一致性Hash算法.一致性 ...
 - 怎样编写高质量的java代码
		
代码质量概述 怎样辨别一个项目代码写得好还是坏?优秀的代码和腐化的代码区别在哪里?怎么让自己写的代码既漂亮又有生命力?接下来将对代码质量的问题进行一些粗略的介绍.也请有过代码质量相关经验的朋友 ...
 
随机推荐
- Jquery Ajax 异步设置Table中某列的值
			
可根据table中某列中的ID去改变某列的值! 只是参考,实际应用中不能这样做的,如果有很多行,频繁访问服务器,服务器是顶不住的! JS: $(document).ready(function () ...
 - sys.argv[]基本用法
			
#python 3.4.2 #windows系统下可以在CMD下执行 python test.py 第一参数 第2个参数 #空格分隔每个参数,sys.argv[]是用来获取命令行参数的 #引用必要的包 ...
 - 【DOM】学习笔记
			
三. 一份文档就是一颗节点树 节点类型:元素节点——属性节点.文本节点 getElementById()返回一个对象,对应一个元素节点 getElementByTagName()返回一个对象数组,分别 ...
 - 判断A树是否包含B树结构
			
题目:输入两棵二叉树A和B,判断B是不是A的子结构 分析:根据数的遍历方法,首先想到的是采用递归的方式要更简单些,树A从根节点进行遍历,首先判断与B的根节点值是否相等,如果相等则进行递归遍历验证,否则 ...
 - 检测是否安装了 .NET Framework 3.5
			
此脚本是为 Internet Explorer 设计的. 其他浏览器可能在 UserAgent 字符串中不包含 .NET CLR 信息. <HTML> <HEAD> &l ...
 - Java自定义缓冲区MyBufferedReader
			
package IODemo; import java.io.FileReader; import java.io.IOException; import java.io.Reader; /** * ...
 - A Tour of Go  Exercise: Fibonacci closure
			
Let's have some fun with functions. Implement a fibonacci function that returns a function (a closur ...
 - 第二十章、启动流程、模块管理与 Loader grub
			
Boot Loader: Grub 『 boot loader 是加载核心的重要工具』!没有 boot loader 的话,那么 kernel 根本就没有办法被系统加载! boot loader 的两 ...
 - [Objective-c 基础 - 3.4] protocol
			
A.概念 1.用来声明方法(不能声明成员变量) 2.只要某个类遵守了这个协议,相当于拥有了协议中得所有方法的声明 3.属性 (1)@required:默认,要求实现,不实现就会发出警告 (2)@opt ...
 - The Hundred Greatest Theorems
			
The Hundred Greatest Theorems The millenium seemed to spur a lot of people to compile "Top 100& ...