您的位置:首页 > 编程语言 > Java开发

【排序系列】快速排序java实现

2011-10-30 02:59 375 查看
package Sorting;

import java.util.Random;

/*

* 快速排序

* 根据序列轴值划分为两部分,把两部分再递归排序

*/

public class QuickSort {

//轴值把序列划分为两个子序列,子序列的大小对性能影响较大

static int getPivot(int array[],int left,int right)

{

//可以选择k(奇数)个随机元素,取其中值下标为轴值

int pivot = right;

return pivot;

}

//在array[left,right]中,根据轴值,划分为较小序列array[left,store]和较大array[store+1,right]

static int partition(int array[],int left,int right)

{

int pivot = getPivot(array,left,right);

Utility.swap(array, pivot, right);

int store = left;

for(int i=left;i<=right-1;i++)

{

if(array[i]<=array[right])

{

Utility.swap(array, i, store);

store++; //维持指向较大序列的第一个

}

}

Utility.swap(array, store, right);

return store;

}

static void quickSort(int array[],int left,int right)

{

if(left<right)

{

int pivot = partition(array, left, right);

quickSort(array, left, pivot - 1);

quickSort(array, pivot + 1, right);

}

}

public static void main(String[] args) {

Random random = new Random();

int[] array = new int[20];

for (int i =0; i!=array.length;i++) {

array[i] = Math.abs(random.nextInt())%100;

}

System.out.println("Before Sorting:");

Utility.printArray(array);

quickSort(array, 0 , array.length - 1);

System.out.println("After Sorting:");

Utility.printArray(array);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: