排序---交换排序---快速排序Quick Sort
2011-08-08 15:02
204 查看
快速排序---Quick Sort 基本思路: 分治思想,将一个大的数据序列分割成两个子序列,然后再依次将两个子序列划分成更小的两个,这里就能很明显的看出快速排序的时间复杂度是与2 的对数有关。 划分的标准是找到序列中数据居中的值做为key值,怎么取得key值,就可以判断出算法的快慢来。通常比较简单的情况是将序列的第一个值做为key值。然后通过交换的思路,将序列划分为左、右两个子序列来,划分后的结果是左边的子序列的值都比key值小,右边的子序列的值都比key值大,key值居于中间。 算法实现: int A[] = {49,38,65,97,76,13,27,49}void qsort(int left, int right){ int pos = A[left]; int empty = left; /*每次都是先把最左边的取出来*/ int p = left, q = right; int mid = 0; /*将pos放在中间,左边的比它小,右边的比它大*/ while(p<q) {/*先做右边,把右边比pos小的放在pos的位置上,因为开始是把最左边的空出来了*/while(p<q){if (pos>A[q]){A[empty]=A[q]empty = q;/*更改空位置*/break;}else{q--;}} while(p<q){if(pos<A[p]){A[empty]=A[p]empty=p;break;}else{p++;}} } A[empty]=pos; mid=empty; if (left<q) {qsort(left,q-1); } if(p<right) {qsort(p+1,right); } }
相关文章推荐
- 【排序算法】 快速排序 quick sort(交换类排序)
- 交换排序算法:快速排序-Quick Sort
- 快速排序 Quick Sort
- 交换排序——冒泡排序和快速排序——C语言描述
- 快速排序 Quick Sort在软考中考查的知识点,转发自NUS
- 快速排序 (Quick Sort)
- 交换类排序--冒泡、快速
- 交换类排序——快速排序
- 交换排序--快速排序
- 交换排序之——冒泡排序、快速排序
- 八大排序方法汇总(选择排序,插入排序-简单插入排序、shell排序,交换排序-冒泡排序、快速排序、堆排序,归并排序,计数排序)
- 交换排序——冒泡排序和快速排序——C语言描述
- 交换类排序:冒泡排序和快速排序
- 排序 - 交换排序 [3 -- 快速排序,中间元素为支点]
- 每天一个小程序(16)——交换排序之快速排序2
- 快速排序(Quick Sort) Java实现
- 排序-交换排序-快速排序-数据结构(30)
- 排序算法--交换排序(冒泡排序、快速排序、随机快速排序)java实现
- 交换排序------快速排序
- 常用排序算法实现[交换排序之冒泡排序、快速排序]