基础算法----快速排序
2017-02-27 00:00
218 查看
摘要:
国内很多程序员来说算法,数据结构,操作系统,网络这些很基础的知识反而都比较薄弱,因为大部分学校或者培训机构的教学能力有限,指导方向都是偏重于实践与实用。
但是随着程序员能力的提升,回头去提升自己基础知识是非常有必要,以算法来说不管是日常编程场景或是面试,掌握常见的10种算法完全可以胜任。
基础算法本身不难,但是好多人在开始之前就先懦弱的害怕了,这个系列简单介绍常见的10种基础算法,抛砖引玉。
数列中选择一个元素作为基准点,常从第一个元素开始;
序列中小于基准点的元素放到前面,大于基准点的元素放到基准点后面,这个过程称为分区操作;
递归的把两个子序列(大于基准点部分,小于基准点部分)进行递归操作;
退出条件,left = right;
国内很多程序员来说算法,数据结构,操作系统,网络这些很基础的知识反而都比较薄弱,因为大部分学校或者培训机构的教学能力有限,指导方向都是偏重于实践与实用。
但是随着程序员能力的提升,回头去提升自己基础知识是非常有必要,以算法来说不管是日常编程场景或是面试,掌握常见的10种算法完全可以胜任。
基础算法本身不难,但是好多人在开始之前就先懦弱的害怕了,这个系列简单介绍常见的10种基础算法,抛砖引玉。
快速排序算法
快速排序使用分治法策略把一个串行分为两个子串行(两个串行的分割点就是基准点,两部分是大于基准点部分和小于基准点部分)。数列中选择一个元素作为基准点,常从第一个元素开始;
序列中小于基准点的元素放到前面,大于基准点的元素放到基准点后面,这个过程称为分区操作;
递归的把两个子序列(大于基准点部分,小于基准点部分)进行递归操作;
退出条件,left = right;
代码示例
static int[] arr = { 6, 1, 2, 7, 9, 3, 4, 5, 10, 8 }; #region 快速排序 static void quickSort(int left,int righ) { if (left > righ) { return; } int k = arr[left]; int i = left; int j = righ; while (i!=j) { while (k <= arr[j] && i < j) { j--; } while (k >= arr[i] && i<j) { i++; } if(i<j) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } if (i == j) { arr[left] = arr[i]; arr[i] = k; } quickSort(left,i-1); quickSort(i+1,righ); } #endregion
结果
源码
http://git.oschina.net/aspnet/Suan-Fa相关文章推荐
- 算法基础之排序篇-快速排序
- 基础算法2——冒泡排序和快速排序
- 基础算法 快速排序
- 算法基础 快速排序
- 算法基础4:快速排序(随机化版本)
- 中级程序员必须懂的20大基础算法(1)——快速排序
- [算法基础]快速排序
- java基础算法-快速排序
- 【计蒜客】基础算法入门之快速排序
- 基础算法(三)---快速排序(Java)
- 基础排序算法之快速排序(Quick Sort)
- 基础算法之排序--快速排序
- php四种基础算法:冒泡,选择,插入和快速排序法
- 基础算法之快速排序
- 基础算法的总结之快速排序
- 算法基础(3)分治策略之快速排序
- 基础算法(2):快速排序(随机划分+三数取中划分+ 随机三数取中划分+尾递归)
- 【基础算法】排序-复杂排序之二(快速排序)
- 基础算法-快速排序
- 算法基础之排序—快速排序