快速排序1--HoardSort/Sort in CLRS
来源:互联网 发布:淘宝实名制 编辑:程序博客网 时间:2024/06/05 15:13
霍尔排序
直接上代码
int Partition1(SeqList R,int i,int j) {//调用Partition(R,low,high)时,对R[low..high]做划分, //并返回基准记录的位置 ReceType pivot=R[i]; //用区间的第1个记录作为基准 ' while(i<j){ //从区间两端交替向中间扫描,直至i=j为止 while(i<j&&R[j].key>=pivot.key) //pivot相当于在位置i上 j--; //从右向左扫描,查找第1个关键字小于pivot.key的记录R[j] if(i<j) //表示找到的R[j]的关键字<pivot.key R[i++]=R[j]; //相当于交换R[i]和R[j],交换后i指针加1 while(i<j&&R[i].key<=pivot.key) //pivot相当于在位置j上 i++; //从左向右扫描,查找第1个关键字大于pivot.key的记录R[i] if(i<j) //表示找到了R[i],使R[i].key>pivot.key R[j--]=R[i]; //相当于交换R[i]和R[j],交换后j指针减1 } //endwhile R[i]=pivot; //基准记录已被最后定位 return i; } //partition
详细解释
第一步:(初始化)设置两个指针i和j,它们的初值分别为区间的下界和上界,即i=low,i=high;选取无序区的第一个记录R[i](即R[low])作为基准记录,并将它保存在变量pivot中;
第二步:令j自high起向左扫描,直到找到第1个关键字小于pivot.key的记录R[j],将R[j])移至i所指的位置上,这相当于R[j]和基准R[i](即pivot)进行了交换,使关键字小于基准关键字pivot.key的记录移到了基准的左边,交换后R[j]中相当于是pivot;然后,令i指针自i+1位置开始向右扫描,直至找到第1个关键字大于pivot.key的记录R[i],将R[i]移到i所指的位置上,这相当于交换了R[i]和基准R[j],使关键字大于基准关键字的记录移到了基准的右边,交换后R[i]中又相当于存放了pivot;接着令指针j自位置j-1开始向左扫描,如此交替改变扫描方向,从两端各自往中间靠拢,直至i=j时,i便是基准pivot最终的位置,将pivot放在此位置上就完成了一次划分。
点击打开链接 动画显示
算法导论上的快速排序
int Partition2(int *arr, int low, int high){ int sentinel = arr[high]; int i = low-1; for(int j=low; j<=high-1; ++j) { if(arr[j] <= sentinel) { i++; swap(arr[i], arr[j]); } } swap(arr[i+1], arr[high]); PrintArray(arr); return i+1;}
- 快速排序1--HoardSort/Sort in CLRS
- CLRS 7.4快速排序分析
- 算法导论CLRS 7.1 快速排序
- CLRS 7.1快速排序的描述
- CLRS 7.2快速排序的性能
- CLRS 7.3快速排序的随机化版本
- 快速排序 Quick Sort
- 快速排序(Quick sort)
- quick sort 快速排序
- 快速排序(Quick Sort)
- 快速排序(Quick Sort)
- Quick Sort (快速排序)
- 快速排序(Quick-Sort)
- 快速排序Quick sort
- 快速排序 (Quick Sort)
- 快速排序(Quick Sort)
- sort-快速排序法、
- sort快速排序
- Android上使用SkBitmap 进行屏幕截图
- 关于table view的content mode的个人看法
- UVa 10085 - The most distant state
- JQuery下关于$.Ready()的分析
- Java程序如何生成Jar、exe及安装文件
- 快速排序1--HoardSort/Sort in CLRS
- android 2D skia库 简单应用
- 天天记录 - 自定义ViewGroup使用Adapter提供视图
- FFMPEG for android 文章汇总
- 编写高效的android代码(译文)
- 同类炸弹Ⅱ(9900炮) 游戏机 玩法技巧
- 工作趣事 之 学以致用-把人变成懒人
- 一个30年老程序员的回顾(二)
- android skia 使用实例