您的位置:首页 > 其它

快速排序非递归实现

2012-10-23 00:02 423 查看
简单写了一下。看代码:

package a;

import java.util.Random;
import java.util.Stack;

public class CopyOfTest1 {

public static void main(String ss[]) {
int[] data = new int[10];
Random rand = new Random();

for (int i = 0; i < data.length; i++) {
data[i] = rand.nextInt(100);
}
for (int i = 0; i < data.length; i++) {
System. out.print(data[i] + "\t" );
}
System. out.println();
get(data);
for (int i = 0; i < data.length; i++) {
System. out.print(data[i] + "\t" );
}
}

public static void get(int[] data) {
Stack<Me> s = new Stack<Me>();
Me a = new Me();
a. low = 0;
a. high = data.length - 1;
s.push(a);
while (!s.isEmpty()) {
Me b = s.pop();
int t_low = b.low ;
int t_high = b.high ;
int low = b.low ;
int high = b.high ;
int pivot = data[low];
while (low < high) {
while (low < high && data[high] >= pivot) {
high--;
}
data[low] = data[high];
while (low < high && data[low] <= pivot) {
low++;
}
data[high] = data[low];
}
data[low] = pivot;
Me c = new Me();
if (low == t_high) {
c. low = low;
} else {
c. low = low + 1;
}
c. high = t_high;
if (c.low == c.high) {

} else
s.push(c);
Me d = new Me();
d. low = t_low;
d. high = low - 1;
if (d.low == d.high) {

} else
s.push(d);
}
}
}

class Me {
int low , high ;

@Override
public String toString() {
return "Me [high=" + high + ", low=" + low + "]" ;
}

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