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

java两种方法实现快速排序

2016-10-30 15:48 387 查看
快速排序

快速排序就是通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

1.第一种实现方法(容易理解)

package com.quick;

public class quick {
public void quick_sort(int[] arrays, int lenght) {
if (null == arrays || lenght < 1) {
System.out.println("input error!");
return;
}
_quick_sort(arrays, 0, lenght - 1);
}

public void _quick_sort(int[] arrays, int start, int end) {
if(start>=end){
return;
}

int i = start;
int j = end;
int value = arrays[i];
boolean flag = true;
while (i != j) {
if (flag) {
if (value > arrays[j]) {
swap(arrays, i, j);
flag=false;

} else {
j--;
}
}else{
if(value<arrays[i]){
swap(arrays, i, j);
flag=true;
}else{
i++;
}
}
}
snp(arrays);
_quick_sort(arrays, start, j-1);
_quick_sort(arrays, i+1, end);

}

public void snp(int[] arrays) {
for (int i = 0; i < arrays.length; i++) {
System.out.print(arrays[i] + " ");
}
System.out.println();
}

private void swap(int[] arrays, int i, int j) {
int temp;
temp = arrays[i];
arrays[i] = arrays[j];
arrays[j] = temp;
}

public static void main(String args[]) {
quick q = new quick();
int[] a = { 49, 38, 65,12,45,5 };
q.quick_sort(a,6);
}

}


2.第二种实现方法

package com.beyond.test;

public class QuickSort {
// 静态快速排序函数,传入一个数组,开始和结束排序位置
public static void sort(int data[], int start, int end) {
if (start>end) {
return;
}
int last = start;
for (int i = start + 1; i <= end; i++) {
if (data[i] < data[start]) {
int temp = data[++last];
data[last] = data[i];
data[i] = temp;
}
}
int temp = data[last];
data[last] = data[start];
data[start] = temp;
sort(data, start, last - 1);
sort(data, last + 1, end);
}

public static void main(String[] args) {
int[] a = { 4,2,5,1,6};
sort(a, 0, 4);
for (int aa : a) {
System.out.println(aa + "--");
}
}

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