【交换排序】快速排序--Java
来源:互联网 发布:软件编程培训业余班 编辑:程序博客网 时间:2024/05/01 13:36
快速排序是由冒泡排序改进而来的 ,其思想是:
--每趟快速排序使表的第一个元素放入适当位置,并将表一分为二,第一份表所有元素比该元素小,而第二份表比该元素大,对这些子表继续进行这种划分,直至所有的子表长度为0或1.
例如:对表{6,8,7,9,0,1,3,2,4,5}进行排序,其过程如下:
如上图所示,进过7次划分排序成功,也就是进过7次快速排序。下面就来解释一下每一次快速排序的过程及原理:
对于第一次排序,也就是对{6,8,7,9,0,1,3,2,4,5}进行第一次划分
然后每一次划分都是该种过程,直到排序成功。
代码如下(运行成功):
public class QuickSort { public int sort1(int[] array,int low,int high){int tmp=array[low];while(low<high){while(low<high && tmp<array[high]){high--;}array[low]=array[high];while(low<high && tmp>array[low]){low++;}array[high]=array[low];}array[low]=tmp;return low;}public void sort2(int[] array,int low,int high){if(low<high){int middle=sort1(array,low,high);sort2(array,low,middle-1);sort2(array,middle+1,high);}} public static void main(String[] args) { int[] array={6,8,7,9,0,1,3,2,4,5}; sort2(array, 0, array.length-1); for(int i=0;i<array.length;i++){ System.out.print(array[i]+"\t"); } }}
因为快速排序的记录移动次数不大于比较的次数,所以快速排序的最坏时间复杂度应为O(n^2),最好时间复杂度为O(n·logn).其空间复杂度为O(logn).
0 0
- 【交换排序】快速排序--Java
- 交换排序之快速排序Java实现
- Java实现交换排序之快速排序
- 交换排序--快速排序
- 交换排序:快速排序
- 交换排序-快速排序
- 交换排序-快速排序
- 交换排序------快速排序
- 【交换排序】快速排序
- 交换排序---快速排序
- 交换排序-快速排序
- 交换排序-快速排序
- 交换排序--快速排序
- 交换排序-快速排序
- Java实现交换排序 之 冒泡排序和快速排序
- Java---交换类排序(冒泡排序,快速排序)
- 排序算法--交换排序(冒泡排序、快速排序、随机快速排序)java实现
- java基础------》数据结构---》交换排序(冒泡排序,快速排序),选择排序,系统排序,插入排序
- 如何读取GridView中HyperLinkField的值
- HDU3631_Shortest Path(最短路/Flody)
- php 单例模式
- Makefile中几个重要的函数
- 杭电oj 1009
- 【交换排序】快速排序--Java
- ubuntu设置root密码
- Makefile中shell必知必会
- 状态压缩dp例题
- 解决Win7下VS2010不保存“最近使用的项目和解决方案”问题
- win 8.1 64位 安装 sql server 2005
- php 策略模式
- C语言static关键字说几点
- 关于Framaroot的PC端控制方法