快速排序非递归实现
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 + "]" ; } }
相关文章推荐
- 快速排序的递归和非递归实现方法
- 快速排序的递归和非递归实现
- Java 递归与非递归实现快速排序
- 快速排序C++实现(递归,非递归)
- *快速排序,递归实现,短小精干版:*/
- 快速排序 的原理及其java实现(递归与非递归)
- 快速排序--递归实现
- 快速排序的非递归实现
- 快速排序的递归实现
- 分别使用递归和迭代实现快速排序
- 快速排序的递归实现算法
- [Sort]快速排序-递归实现
- 快速排序非递归实现
- 快速排序的非递归实现
- php使用递归与迭代实现快速排序示例
- 百度面试,快速排序非递归实现
- Ackerman函数的递归、全排列的递归实现、整数划分的递归、二分搜索的递归、合并排序的递归、.快速排序
- Java 实现快速排序 递归和非递归
- java实现快速排序-递归
- 快速排序lua实现 递归和栈两种实现