快速排序的递归与非递归实现
来源:互联网 发布:system01.dbf数据大 编辑:程序博客网 时间:2024/05/20 06:24
import java.util.Arrays;import java.util.Stack;class QuickSort {public static void quickSort(int[] array){if (array==null||array.length==0){return;}//递归算法//quickSortCore(array,0,array.length-1);//非递归quickSortCore2(array,0,array.length-1);}public static void quickSortCore(int[] array, int p, int r){if (p<r){int q=partition(array, p,r);quickSortCore(array,p,q-1);quickSortCore(array,q+1,r);}}public static int partition(int[] array, int p, int r){int x=array[r];int i=p;int j=i;while (i<r){if(array[i]<x){swap(array,i,j);j++;}i++;}swap(array,r,j);return j;}public static void swap(int[] array, int i,int j){int temp=array[i];array[i]=array[j];array[j]=temp;}//非递归,用循环?用栈记录?记录什么?记录当前划分序列的下标起始点public static void quickSortCore2(int[] array, int start, int end){Stack<Integer> stack=new Stack<Integer>();stack.push(start);stack.push(end);while (!stack.empty()){//后进先出int r=stack.pop();int p=stack.pop();//划分的终止条件if (p>=r){continue;}int q=partition(array,p,r);stack.push(p);stack.push(q-1);stack.push(q+1);stack.push(r);}}public static void main(String[] args) {int[] array={2,5,8,4,7,3,6};quickSort(array);System.out.println(Arrays.toString(array));}}
阅读全文
0 0
- 快速排序递归与非递归实现
- 快速排序的递归与非递归实现
- 快速排序的递归与非递归实现
- 快速排序递归与非递归代码实现与思考
- 快速排序。冒泡排序递归和非递归的实现
- 快速排序算法递归与非递归实现
- 快速排序实现之递归与非递归
- 快速排序的非递归实现
- php的非递归快速排序实现
- 非递归的快速排序实现(转)
- 快速排序的非递归实现
- 快速排序的非递归实现
- 快速排序的非递归实现
- 快速排序的非递归实现代码
- 快速排序的非递归实现
- 快速排序算法的非递归实现
- 快速排序的非递归实现
- 快速排序的非递归实现
- Vue多元素过渡
- UVALive
- Unity Shader学习笔记:坐标空间
- 阿里ECS无法telnet到smtp 25号端口的解决方案
- wps个人免费版支持宏操作
- 快速排序的递归与非递归实现
- jquery li循环轮播切换
- ctype中的各种函数 Character handling functions
- jquery 父页面控制子页面IFRAME
- 摩尔斯电报码 解码算法 (Python 语言描述)
- jdom操作xml文件
- Intellij IDEA 2017新特性之Spring Boot相关
- 基于VPX总线架构下的Virtex-7与C6678信号处理的VPX功能板简介
- 分布科技携手复星集团 区块链“赋能”产业经济