快速排序
来源:互联网 发布:paxos算法 应用 编辑:程序博客网 时间:2024/05/01 08:52
基本思想:通过一趟排序将待排记录分割成独立的两部分,其中的一部分记录的关键字均比另一部分记录的关键字小
再分别对这两部分记录继续进行排序,以达到整个序列有序。
#include <stdio.h>void QuickSort(int *a,int low,int high); int FindPos(int *a,int low,int high); int main(void){int a[6]={-2,1,0,5,4,3}; QuickSort(a,0,5); //第二个参数表示第一个元素的下标 第三个参数表示最后一个元素的下标for (int i=0;i<6;++i)printf("%d ",a[i]);printf("\n"); return 0;}void QuickSort(int *a,int low,int high) //查找一定成功,不返回值 {int pos;if (low<high){pos = FindPos(a,low,high); //找到数组a中从low开始到hign结束的第一个元素的位置QuickSort(a,low,pos-1); //左边一半继续这样排 QuickSort(a,pos+1,high); //右边一半继续这样排 } } int FindPos(int *a,int low,int high) //一趟排序后找到分界点(书上为此种写法) {int val = a[low];while(low<high){while(low<high && a[high]>=val) --high;a[low]=a[high];while(low<high && a[low]<=val) ++low;a[high]=a[low];} //终止while循环后,low和high的值相等 a[low]=val;return low;//low可以改为 high }
看到还有一些快排的写法,总弄不对,就记着这个吧。忘了的时候看看书就通啦!
0 0
- 快速排序
- 快速排序
- 快速排序
- 快速排序!
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- java简易多用户聊天室
- idea2016 修改jsp页面需要重新部署项目的问题
- 取出字符串中的数字求和(c语言)
- poj3237 Tree
- HBase管理 HBase数据备份方式对比
- 快速排序
- SonarQube程序系统质量管理平台介绍与使用
- 第二周 项目0-宣告主权
- 优化php效率,提高php性能的一些方法
- MySQL半同步复制
- Android手机平板两不误,使用Fragment实现兼容手机和平板的程序
- 第二周【项目3-体验复杂度】(2)汉诺塔
- 重要博客地址
- Ant和Maven特点