快速排序
2016-04-29 17:15
218 查看
1、算法思想
通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
2、执行流程
(a)一趟排序的过程
(b)排序的全过程
3、算法代码
通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
2、执行流程
(a)一趟排序的过程
(b)排序的全过程
3、算法代码
void qickSort(int a[], int l, int r)//待排序数据存在a[]中 { int i = l, j = r; int temp; if (l < r) { temp = a[l]; while (i != j)//完成一趟排序 { while (j > i && temp < a[j])//从右往左扫描找到一个小于temp的元素 --j; if (i < j) { a[i] = a[j]; ++i; } while (i < j && a[i] < temp)//从左往右扫描找到一个大于temp的元素 ++i; if (i < j) { a[j] = a[i]; --j; } } a[i] = temp;//将temp放到最终的位置 qickSort(a, l, i - 1);//递归地对temp左边的元素进行排序 qickSort(a, i + 1, r);//递归地对temp右边的元素进行排序 } }
相关文章推荐
- JavaScript演示排序算法
- C#数据结构之顺序表(SeqList)实例详解
- Lua教程(七):数据结构详解
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C#数据结构之队列(Quene)实例详解
- C#数据结构揭秘一
- C#数据结构之单链表(LinkList)实例详解
- 数据结构之Treap详解
- 算法之排序算法的算法思想和使用场景总结
- PHP版本常用的排序算法汇总
- 用C语言举例讲解数据结构中的算法复杂度结与顺序表
- C#数据结构之堆栈(Stack)实例详解
- C#数据结构之双向链表(DbLinkList)实例详解
- JavaScript数据结构和算法之图和图算法
- JavaScript实现多种排序算法
- Java数据结构及算法实例:冒泡排序 Bubble Sort
- php 地区分类排序算法
- js三种排序算法分享
- Javascript中的常见排序算法
- Java数据结构及算法实例:插入排序 Insertion Sort