首页 > 其他 > 详细

快速排序

时间:2014-03-11 23:18:57      阅读:527      评论:0      收藏:0      [点我收藏+]

package introjava;

public class QuickSort2 {
/**
* description : 快速排序
* @autor kwzhang
* modify :2012-6-20
*
* @param pData
* @param left
* @param right
* @return
*/
public static void quickSort(int [] list)
{
    quickSort(list, 0, list.length - 1);
}
static void quickSort(int n[], int left, int right) {
    int dp;
    if (left < right) {
        dp = partition(n, left, right);
        quickSort(n, left, dp - 1);
        quickSort(n, dp + 1, right);
    }
}

static int partition(int n[], int left, int right) {
    int pivot = n[left];
    while (left < right) {
        while (left < right && n[right] >= pivot)  //元素比pivot大继续,小就停
            right--;
        if (left < right)
            n[left++] = n[right];          //将n[left]赋值为n[right],n[left]已经存在pivot里,然后left自增
        while (left < right && n[left] <= pivot)   //元素比pivot小继续,大就停
            left++;
        if (left < right)               //将n[right]赋值为n[left],这样完成n[left]和n[right]的交换,然后各自自增或自减,并返回当做下轮的pivot位置。
            n[right--] = n[left];
    }
    n[left] = pivot; //改成n[right] = pivot;结果也是对的
    return right;  //改成left也是对的
}
public static void main(String []args){
    int [] list = {1,2,3,4,5,6};
// int [] list = {5, 2, 9, 3, 8, 4, 5, 5, 0, 1, 6, 7};
    for(int i = 0; i < list.length; i++)
        System.out.print(list[i] + " ");
    System.out.print("\n");

    quickSort(list);

    for(int i = 0; i < list.length; i++)
        System.out.print(list[i] + " ");
    }
}

快速排序,布布扣,bubuko.com

快速排序

原文:http://www.cnblogs.com/hansonzhe/p/3595186.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!