/*
稳定性:[不稳定](不稳定的算法结构:如果有两个相同的元素5,会导致第一个5和第二个5的位置发生改变)
*/
package seven_happy;
public class Code_Demo {
/**
* author: Ain
* model: write a code about MergeSort
* date:2016-3-9
*/
// 定义变量值
private static final int[] a = { 3, 0, 1, 8, 7, 2, 5, 4, 9, 6 };
private static final String SORT_AGO = "快速排序前的顺序为:";
private static final String SORT_AFTER = "快速排序后的顺序为:";
// 主程序入口
public static void main(String[] args) {
// 调用快速排序算法
QuickSort(a, 1, 10);
// 排序前的数组中的数据顺序
System.out.print(SORT_AGO);
System.out.print(" 3 0 1 8 7 2 5 4 9 6 ");
// 排序后的数组中的数据顺序
System.out.println(" ");
System.out.print(SORT_AFTER);
for (int i = 1; i <= 10; i++) {
System.out.print(" " + a[i - 1]);
}
}
public static int Partition(int a[], int p, int r) {
// 快速排序
int x = a[r - 1];
int i = p - 1;
int temp;
for (int j = p; j <= r - 1; j++) {
if (a[j - 1] <= x) {
// swap(a[j-1],a[i-1]);
i++;
temp = a[j - 1];
a[j - 1] = a[i - 1];
a[i - 1] = temp;
}
}
// swap(a[r-1,a[i+1-1]);
temp = a[r - 1];
a[r - 1] = a[i + 1 - 1];
a[i + 1 - 1] = temp;
return i + 1;
}
public static void QuickSort(int a[], int p, int r) {
if (p < r) {
int q = Partition(a, p, r);
QuickSort(a, p, q - 1);
QuickSort(a, q + 1, r);
}
}
}
稳定性:[不稳定](不稳定的算法结构:如果有两个相同的元素5,会导致第一个5和第二个5的位置发生改变)
*/
package seven_happy;
public class Code_Demo {
/**
* author: Ain
* model: write a code about MergeSort
* date:2016-3-9
*/
// 定义变量值
private static final int[] a = { 3, 0, 1, 8, 7, 2, 5, 4, 9, 6 };
private static final String SORT_AGO = "快速排序前的顺序为:";
private static final String SORT_AFTER = "快速排序后的顺序为:";
// 主程序入口
public static void main(String[] args) {
// 调用快速排序算法
QuickSort(a, 1, 10);
// 排序前的数组中的数据顺序
System.out.print(SORT_AGO);
System.out.print(" 3 0 1 8 7 2 5 4 9 6 ");
// 排序后的数组中的数据顺序
System.out.println(" ");
System.out.print(SORT_AFTER);
for (int i = 1; i <= 10; i++) {
System.out.print(" " + a[i - 1]);
}
}
public static int Partition(int a[], int p, int r) {
// 快速排序
int x = a[r - 1];
int i = p - 1;
int temp;
for (int j = p; j <= r - 1; j++) {
if (a[j - 1] <= x) {
// swap(a[j-1],a[i-1]);
i++;
temp = a[j - 1];
a[j - 1] = a[i - 1];
a[i - 1] = temp;
}
}
// swap(a[r-1,a[i+1-1]);
temp = a[r - 1];
a[r - 1] = a[i + 1 - 1];
a[i + 1 - 1] = temp;
return i + 1;
}
public static void QuickSort(int a[], int p, int r) {
if (p < r) {
int q = Partition(a, p, r);
QuickSort(a, p, q - 1);
QuickSort(a, q + 1, r);
}
}
}