Java快速排序的实现和时间空间复杂度分析
2014-03-22 09:55
519 查看
package learn.java; public class QuickSort { /** * @param args */ public static void main(String[] args) { int[] pendingSort={10,13,2,1,20,39,45,32,3,5,6,86,9,100,99,45,65,65,23}; int left=0; int right=pendingSort.length-1; int[] result=sort(pendingSort,left,right); for(int index=0;index<result.length-2;index++){ System.out.print(result[index]+","); } System.out.print(result[result.length-1]); } private static int[] sort(int[] pendingSort, int left, int right) { if(left<right) { int temp=pendingSort[right]; int p=left; int q=right; while(p<q) { while(pendingSort[p]<=temp&&p<q) { p++; } pendingSort[q]=pendingSort[p]; while(pendingSort[q]>=temp&&q>p) { q--; } pendingSort[p] = pendingSort[q]; } int mindle=p; pendingSort[q]=temp; sort(pendingSort,left,mindle-1); sort(pendingSort,mindle+1,right); } return pendingSort; } }
时间复杂度 N O(logN) 空间复杂度logN,请参照视频http://v.youku.com/v_show/id_XNzQwNTAxMjA=.html
相关文章推荐
- 对于一颗完全二叉树,要求给所有节点加上一个pNext指针,指向同一层的相邻节点;如果当前节点已经是该层的最后一个节点,则将pNext指针指向NULL;给出程序实现,并分析时间复杂度和空间复杂度。
- 排序算法的C语言实现以及各个算法的时间复杂度和空间复杂度分析(冒泡排序)
- 对于一颗完全二叉树,要求给所有节点加上一个pNext指针,指向同一层的相邻节点;如果当前节点已经是该层的最后一个节点,则将pNext指针指向NULL;给出程序实现,并分析时间复杂度和空间复杂度。
- 对于一颗完全二叉树,要求给所有节点加上一个pNext指针,指向同一层的相邻节点;如果当前节点已经是该层的最后一个节点,则将pNext指针指向NULL;给出程序实现,并分析时间复杂度和空间复杂度。
- java版排序算法简介及冒泡排序以及优化,选择排序,直接插入排序,希尔排序,堆排序,快速排序及其优化前言 2 分类 2 稳定性 3 时间复杂度 4 Java实现版本 5 1、冒泡排序 6 2、选择排序
- 链表的java实现与时间和空间复杂度分析
- 快速排序实现以及时间复杂度分析
- 计数排序的思想,时间空间复杂度细致分析以及java源代码实现
- 排序算法——快速排序的图解、代码实现以及时间复杂度分析
- 插入排序算法的java实现及时间复杂度分析
- java实现时间复杂度O(1)的LFU缓存
- 分析时间复杂度及空间复杂度
- 一步步学习数据结构和算法之快速排序效率分析及java实现
- 时间复杂度为O(N*logN)的常用排序算法总结与Java实现
- 实现一个数组中奇数和偶数分开,奇数在前部分,偶数在后部分 时间复杂度为O(n),空间复杂度为O(1)
- 时间序列分析之 ARIMA 模型的JAVA实现
- 辗转相除法 java 实现 及其时间复杂度证明
- java实现栈-输出最大值,最小值,时间复杂度O(1)
- 找出数组中第k大的数(时间复杂度分析、C++代码实现). TopK in array. ( leetcode - 215 )
- lisa程序的时间空间复杂度分析