快速排序与其中的划分算法
来源:互联网 发布:西门子plc编程教学 编辑:程序博客网 时间:2024/06/05 16:42
快速排序的原理:
QUICKSORT(A,p,r)if p<rthen q <- PARTITION(A,p,r) QUICKSORT(A,p,q-1) QUICKSORT(A,q+1,r)
算法导论第7章快速排序给出的切分算法:
PARTITION(A,p,r)x <- A[r]i <- p-1for j <- p to r-1if A[j] <- xthen i <- i+1 exchange A[i]<->A[j]exchange A[i+1]<->A[r]return i+1;最初由C.A.R.Hoare设计的切分算法(划分算法):
HOARE-PARTITION(A,p,r)x <- A[p]i <- p-1j <- r+1while TRUEdo repeat j <- j-1until A[j] <= x repeat i <- i+1until A[i] >= xif i < jthen exchange A[i] <-> A[j]else return j;两种切分算法的实现:
void swap(int *a,int *b){inttemp = *a;*a = *b;*b = temp;}int hoare_partition(int a[],int left,int right){int i,j,pivot;pivot = a[left];i = left - 1;j = right + 1;while(1){do{j--;}while(a[j]>pivot);do{i++;}while(a[i]<pivot);if(i<j)swap(a+i,a+j);elsereturn j;}}int partition(int a[],int left,int right){int i,j;int pivot = a[right];i = left - 1;for(j=left;j<right;j++){if(a[j]<=pivot){i++;swap(a+i,a+j);}}swap(a+i+1,a+right);return i+1;}
Hoare切分的变形版本:
int Partition(int arr[], int low, int high){int i, j, pivot;i = low, j = high, pivot = arr[low];while(i < j){while(i < j && arr[j] >= pivot) --j;if(i < j) swap(arr[i++], arr[j]);while(i < j && arr[i] <= pivot) ++i;if(i < j) swap(arr[i], arr[j--]);}return j; //返回基准元素位置}
得到的快速排序算法为
void qSort(int a[],int left,int right){if(left<right){int idx = partition(a,left,right);qSort(a,left,idx-1);qSort(a,idx+1,right);}}
0 0
- 快速排序与其中的划分算法
- // 快速排序中的划分 ,<<数据结构》算法10.6(b)
- 数据结构-快速排序-划分算法
- 快速排序中的区间划分
- 划分算法(快速排序的根基)
- 排序算法之三路划分的快速排序
- 数据结构与算法之七(划分算法与快速排序)
- 基础算法(2):快速排序(随机划分+三数取中划分+ 随机三数取中划分+尾递归)
- 基础算法(2):快速排序(随机划分+三数取中划分+ 随机三数取中划分+尾递归)
- Algorithm--让人困惑的快速排序(划分算法)
- Algorithm--让人困惑的快速排序(划分算法) 续
- 快速排序的划分算法的总结和思考
- 算法--Java代码实现快速排序以及三路划分
- 算法<基于三路划分的快速排序>
- <算法>基于三路划分的链表快速排序
- 高级排序-快速排序-利用三数据取中划分的快速排序算法
- 快速排序中的算法艺术
- 《算法导论》中的快速排序
- 高并发的epoll+多线程
- Windows 内核模式下的线程同步
- vim
- Establishing a Backup Policy(摘自官网文档5.6)
- module_init 和 late_initcall 区别
- 快速排序与其中的划分算法
- iOS应用程序生命周期(前后台切换,应用的各种状态)详解 mark
- 数组和指针要点
- JMX学习笔记(四):Notifications
- 扩展BeanUtils拷贝文件允许时间类型的值为空
- 构造指定长度的英文词典
- Ifchange不知道?HR大数据不知道?你out了
- 第113天
- 地理问题的哲学思考