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

java实现快速排序

2012-05-11 14:26 405 查看
View Code

package com.test.suanfa;

public class QuickSoft {

private void swap(int a[], int i, int j) {
int tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}

private int partition(int a[], int p, int r) {
int point = a[r];
// 将小于等于point的元素移到左边区域
// 将大于point的元素移到右边区域
int index = p;
for (int i = index; i < r; ++i) {
if (a[i] - point <= 0) {
swap(a, index++, i);
System.out.println("    交换之后分组为~~~~~~~~~~~"+i+"~~~~~~~~~~~~~~~~~");
for (int j = 0; j < a.length; j++) {
System.out.print(a[j]+" ");
}
System.out.println();
//System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~");
}
}
swap(a, index, r);
return index;
}

public void qsort(int a[], int p, int r) {
if (p < r) {
// 确定拆分点,并对数组元素进行移动
// 这是快速排序算法的关键步骤
int q = partition(a, p, r);
// 对左半段排序
qsort(a, p, q - 1);
// 对右半段排序
qsort(a, q + 1, r);
}
}

public static void main(String[] args) {
// 声明一个类
QuickSoft ms = new QuickSoft();
int len = 10;
int a[]={5,1,2,9,3,0,8,4,7,6};
// 初始化a数组

ms.partition(a, 0, len - 1);
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]+" ");
}
System.out.println();
System.out.println("---------------------");
// 快速排序
ms.qsort(a, 0, len - 1);

System.out.println("排序后的数组如下:");
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]+" ");
}

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