java快速排序

package com.test;


/**
 * @ClassName: QuickSort.java
 * @Description: 快速排序算法
 * @author Bert
 * 2014-4-3 下午4:21:21
 */
public class QuickSort {


/**
* 排序算法
* @param num 数据组
* @throws Exception 
*/
public static void sort(Integer[] num) {
if (num != null && num.length > 0) {
_quickSort(num, 0, num.length - 1);  
} else {
System.out.println("数组为空!");
}
}

public static int getMiddle(Integer[] list, int low, int high) {
int tmp = list[low];    // 数组的第一个作为中轴
while (low < high) { // 仅当区间长度大于1时才须排序
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 static void _quickSort(Integer[] list, int low, int high) {
if (low < high) {
int middle = getMiddle(list, low, high);  //将list数组进行一分为二
System.out.println("***" + middle);
_quickSort(list, low, middle - 1);        //对低字表进行递归排序
_quickSort(list, middle + 1, high);       //对高字表进行递归排序
}
}

public static void main(String[] args) {
// 数据数组
Integer[] num = {3,5,2,8,7};
sort(num);
// for(int i=0; i< num.length; i++){  
//            System.out.print(num[i]+" ");  
//        }  
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值