算法分析
它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
基本步骤:
- 获得待排序数组a
- 选取一个合适的数字p(一般来说就选取数组或是子数组的第一个元素)作为排序基准
- 将待排序数组a中比基准p小的放在p的左边,比基准p大的放在p的右边
- 从第3步获得的两个子数组sub1跟sub2
- 判断sub1或sub2中是否只有一个元素,如果只有一个元素则返回此元素,否则就将sub1(或是sub2)代回到第1步中继续执行.
public class QuickSort extends Sort{ public static void main(String args[]){ int a[] = {2,,4,6,8,0,1,3,5,7,9}; printArray(a); quickSort(a); printArray(a) } public static void quickSort(int a[]){ qsort(a,0,a.length-1) } public static void qsort(int a[],int left,int right){ int part = partition(a,left,right); qsort(a,left,part-1); qsort(a,part+1,right); } public static int partition(int a[],int left,int right){ int part = a[left]; while(left < right){ while(left < right && a[right] >= part){ right--; } a[left] = a[right]; while(left < right && a[left] <= part){ left++; } a[right] = a[left]; } a[left] = part; return part; } }
public class Sort { public static void printArray(int[] src){ System.out.println(); System.out.print("["); for(int i=0;i<src.length;i++){ System.out.print(" " + src[i] + " "); } System.out.print("]"); } }
相关推荐
知道快速排序算法的思想,但是一直都没有动手写,今天写了下,发现还不是那么容易
快速排序算法,C语言 快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有...
快速排序算法(C经典实例) 快速排序算法(C经典实例) 快速排序算法(C经典实例) 快速排序算法(C经典实例) 快速排序算法(C经典实例)
c语言版本的数据结构的快速排序算法,适用于新手学习
快速排序算法C语言实现,快排序算法QuickSort.cpp
快速排序算法c++实现,快速实现插入排序十万个数(调用)。可以改成输入。并附加了程序运行计时,用于测试时间复杂度,可以移除。绝对能用
给定一个数列,用快速排序算法把它排成升序
C++快速排序算法程序,用于处理大量数据, 并对这些数据进行快速的排序
自己写的用C++实现的快速排序算法,运行通过,可以作为参考。
快速排序算法 word格式 较快速度 MATLAB格式
快速排序算法的精确实现 已经编译通过 在VC++6.0上面
快速排序算法的改进思路 1.选取好的基准,是两边的数据个数尽量的均匀 取数组的第一个,中间,最后一个数据,取三个数中第二大的数作为基准 2. 不递归 3.与插入结合,当段内的数组个数小于等于16的时候,使用...
2、单处理机上快速排序算法 3、快速排序算法的性能 4、快速排序算法并行化 5、描述了使用2m个处理器完成对n个输入数据排序的并行算法。 6、在最优的情况下并行算法形成一个高度为logn的排序树 7、完成快速排序的...
详细解释了快速排序的java实现.里面有代码,还有注释说明
资源名:matlab 实现快速排序算法_一共有主程序,分类,插入和选择四个程序 资源类型:matlab项目全套源码 源码说明: 全部项目源码都是经过测试校正后百分百成功运行的,如果您下载后不能运行可联系我进行指导或者...
JAVA冒泡排序和快速排序算法,符合实验报告要求哦
经测试的C++快速排序算法,可直接运行 源代码
1)不做随机化处理的递归实现; 2)采用随机化处理的递归实现; 3)用while循环消除尾递归; 4)用栈模拟递归,并证明所需的栈空间为O(logn); 5) 够小时改用插入排序