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

快速排序(JAVA)

2016-05-16 09:20 423 查看
我所写的快速排序的核心思想就是:对于一个整形数组,先找到它中间的元素,随后从数组的左侧逐一寻找大于中间元素的元素,同时从数组的右侧逐一寻找小于中间元素的元素,若两边都找到了,就交换者两个元素,之后就是一直递归就行了,递归的过程体现了二分的思想。

下面是我写的快速排序(Java版):

import java.util.Scanner;

public class Main {

public static void Quicksort(int[] a, int Left, int Right) {

int left, right, temp, middle;
middle = a[(Left + Right) / 2];
left = Left;
right = Right;
do {
// 从左边寻找大于中间值的下标
while (left < Right && a[left] < middle) {
left++;
}
// 从右边寻找小于中间值的下标
while (right > Left && a[right] > middle) {
right--;
}
// 找到一对,对换他们
// 注意:如果少了等于号,会长生死循环
if (left <= right) {
temp = a[left];
a[left] = a[right];
a[right] = temp;
left++;
right--;
}

} while (right >= left); // 直到左右对换

if (Left < right) {
Quicksort(a, Left, right);
}

if (Right > left) {
Quicksort(a, left, Right);
}

}

public static void main(String[] args) {

Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[] p = new int
;
for (int i = 0; i < n; i++) {
p[i] = in.nextInt();
}
Quicksort(p, 0, p.length - 1);
for (int i = 0; i < p.length; i++) {
System.out.print(p[i] + " ");
}

}

}


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