快速排序
来源:互联网 发布:h.323端口号 编辑:程序博客网 时间:2024/05/21 02:51
快速排序可能是应用最广泛的排序算法了。快速排序流行的原因是它适用于各种不同的输入数据并且在一般应用中比其他排序算法要快得多。快速排序引人注目的特点包括:它是原地排序(只需要一个很小的辅助栈),并且将长度为N的数组排序所需的时间和NlgN成正比。它的缺点在于非常脆弱,在实现时要非常小心才能避免低劣的性能。快速排序是一种分治的排序算法。它将一个数组分成两个子数组,将两部分独立地排序。快速排序将数组排序的方式是当两个子数组都有序时整个数组自然就有序了。
//Java版public class Quick{public static void sort(int[] a,int lo, int hi){if(lo>=hi) return;int p = partition(a,lo,hi);sort(a,lo,p-1);sort(a,p+1,hi);}public static int partition(int[] a,int lo, int hi)//划分方法{int i = lo, j = hi;int v = a[lo];while(i < j){while(i<j&&a[j]>=v)j--;while(i<j&&a[i]<=v)i++;exch(a,i,j);}exch(a,lo,i); return i;}public static void exch(int[] a, int i, int j){int temp = a[i];a[i] = a[j];a[j] = temp;}}//C语言版int partition(int *a, int p, int r){ int x = a[r]; int i = p-1; for (int j = p; j <= r-1; j++) { if(a[j]<=x) { i++; int temp = a[i]; a[i] = a[j]; a[j] = temp; } } int temp = a[i+1]; a[i+1] = a[r]; a[r] = temp; return i+1;}void quicksort(int *a, int p , int r){ if(p < r) { int q = partition(a,p,r); quicksort(a,p,q-1); quicksort(a,q+1,r); }}
1 0
- 快速排序
- 快速排序
- 快速排序
- 快速排序!
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- LayoutInflater和inflate()方法的用法 (自定义View中加载xml布局)
- wordpress加入站长统计功能
- 【数据库技术与应用】课程小结1.1+1.2
- 关于父类子类继承关系
- the best path(欧拉回路,欧拉路径)
- 快速排序
- 关于父类子类继承关系
- Python安装
- Java EE - Spring MVC 数据绑定实例
- poj1094 Sorting it all out(拓扑排序)
- 160923基础小结
- 07:可变长数组、多维数组
- NSDate分类-日期格式化以及日期常用判断
- 求字符串中连续数字的最长字符串