算法学习之快速排序(java)
2014-10-15 17:09
141 查看
快速排序(Quicksort)的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
快速排序相对还是比较好理解的,上代码:
使用10万随机数据测试:
开始排序...
排序时间是10毫秒
11,30,36,36,55,96,99,100,117,120,123,138,144,148,158,172,194,222,224,225,……,999968,999974,999995
在数据量比较大的时候试试快速排序吧。
几个理解起来相对简单的排序学习完毕了,下面去努力学习堆排序了……
快速排序相对还是比较好理解的,上代码:
/** * 递归方式实现快速排序 * 递归算法容易出现 stackoverflow,所以要谨慎做判断。 * @param src * @param s * @param e */ public static void quickSort1(int src[],int s,int e){ if(src==null||src.length<2){ return; } if(s>=e){//防止递归无限调用。 return; } if(s>src.length-1){//防止数组越界 return; } int key=src[s]; int i=s,j=e; while(i<j){ while(i<j&&src[j]>key){ j--; } if(i<j){ src[i]=src[j]; i++;//src[i]置换之后,i向后移动一位,不移位也不会出错 } while(i<j&&src[i]<=key){ i++; } if(i<j){ src[j]=src[i]; j--;//src[j]置换之后,j向前移动一位,不移位也不会出错 } } src[i]=key; quickSort1(src,s,i-1); quickSort1(src,i+1,e); }
使用10万随机数据测试:
开始排序...
排序时间是10毫秒
11,30,36,36,55,96,99,100,117,120,123,138,144,148,158,172,194,222,224,225,……,999968,999974,999995
在数据量比较大的时候试试快速排序吧。
几个理解起来相对简单的排序学习完毕了,下面去努力学习堆排序了……
相关文章推荐
- 一步步学习数据结构和算法之快速排序效率分析及java实现
- 算法(第四版)学习笔记之java实现快速排序
- 一步步学习数据结构和算法之快速排序效率分析及java实现
- 我的Java开发学习之旅------>Java经典排序算法之快速排序
- 算法学习(二)——快速排序(Java实现)
- 算法学习系列-快速排序
- 算法学习之排序学习之基数排序,计数排序及java实现
- 用JAVA实现排序算法之四:快速排序
- 算法学习-排序算法-快速排序
- 常见算法学习及其Java实现--有序区和无序区的冒泡算法实现
- 算法学习之最大子序列算法(java实现)
- 数据结构(Java 快速排序模拟)本代码重在学习数据结构思路,代码完整性欠缺,请见谅
- 常见算法学习及其Java实现--插入排序算法
- 快速排序 算法 Java 实现
- 学习凸包(五):卷包裹算法--兼解POJ1113(JAVA)
- 算法学习笔记----快速排序
- 算法1-快速排序(java实现)
- 怎样用Java实现网桥自学习算法啊??
- 数据结构——快速排序原理及算法Java实现
- 由快速排序引申而来--如何学习算法