/**
* Created by gaochenghao on 14-7-9.
*/
public class QuickSortTest {
//key = 2
/// 2 6 8 5 1
// 16852
// 12856 一次结束
//分成 1 | 2 | 856
List<Integer> l = new ArrayList<Integer>();
public QuickSortTest add(Integer in) {
this.l.add(in);
return this;
}
public void sort() {
this.sortLH(0, l.size() - 1);
System.out.println(l);
}
private void sortLH(int start, int end) {
if (start == end || l.size() == 0) {
return;
}
int low = start;
int h = end;
int first = l.get(low);
while (low < h) {
while (low < h) {
if (l.get(h) >= first) {
h--;
continue;
}
int tmp = l.get(low);
l.set(low, l.get(h));
l.set(h, tmp);
break;
}
while (low < h) {
if (l.get(low) <= first) {
low++;
continue;
}
int tmp = l.get(h);
l.set(h, l.get(low));
l.set(low, tmp);
break;
}
}
if (low == h) {
System.out.println("l=" + low + " h=" + h);
sortLH(start, low - 1 < start ? start : low - 1);
sortLH(low + 1 > end ? end : low + 1, end);
}
}
public static void main(String[] args) {
QuickSortTest qt = new QuickSortTest();
qt.add(2).add(6).add(8).add(5).add(1).add(99).add(87).add(0).add(4).add(6);
qt.sort();
}
}
* Created by gaochenghao on 14-7-9.
*/
public class QuickSortTest {
//key = 2
/// 2 6 8 5 1
// 16852
// 12856 一次结束
//分成 1 | 2 | 856
List<Integer> l = new ArrayList<Integer>();
public QuickSortTest add(Integer in) {
this.l.add(in);
return this;
}
public void sort() {
this.sortLH(0, l.size() - 1);
System.out.println(l);
}
private void sortLH(int start, int end) {
if (start == end || l.size() == 0) {
return;
}
int low = start;
int h = end;
int first = l.get(low);
while (low < h) {
while (low < h) {
if (l.get(h) >= first) {
h--;
continue;
}
int tmp = l.get(low);
l.set(low, l.get(h));
l.set(h, tmp);
break;
}
while (low < h) {
if (l.get(low) <= first) {
low++;
continue;
}
int tmp = l.get(h);
l.set(h, l.get(low));
l.set(low, tmp);
break;
}
}
if (low == h) {
System.out.println("l=" + low + " h=" + h);
sortLH(start, low - 1 < start ? start : low - 1);
sortLH(low + 1 > end ? end : low + 1, end);
}
}
public static void main(String[] args) {
QuickSortTest qt = new QuickSortTest();
qt.add(2).add(6).add(8).add(5).add(1).add(99).add(87).add(0).add(4).add(6);
qt.sort();
}
}