常用排序算法实现——快速排序

来源:互联网 发布:单机版进销存软件 编辑:程序博客网 时间:2024/06/05 14:58

//快速排序算法(使用分治算法排序)
/*
原理,通过一趟扫描将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列
*/

实现原理参见 http://zh.wikipedia.org/wiki/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F

void swap(int *a, int *b){int c = *a;*a = *b;*b = c;}int Partition(int array[], int low, int high){    // 采用子序列的第一个元素为枢纽元素    int pivot = array[low];    while (low < high)    {        // 从后往前在后半部分中寻找第一个小于枢纽元素的元素        while (low < high && array[high] >= pivot)        {            --high;        }        // 将这个比枢纽元素小的元素交换到前半部分        array[low] =  array[high];        // 从前往后在前半部分中寻找第一个大于枢纽元素的元素        while (low < high && array[low] <= pivot)        {            ++low;        }        // 将这个比枢纽元素大的元素交换到后半部分        array[high] =  array[low];    }    // 返回枢纽元素所在的位置    return low;}// 快速排序void QuickSort(int array[], int low, int high){    if (low < high)    {        int n = Partition(array, low, high);        QuickSort(array, low, n);        QuickSort(array, n + 1, high);    }}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 虚火引起的牙痛怎么办 牙髓炎怎么办立刻止疼 小蜜丸吃不下去怎么办 铜钱的字不认识怎么办 古钱币出手好烦怎么办 安装目录不可写怎么办 手机不支持exfat格式怎么办 windows7图标变大了怎么办 igs格式烂曲面怎么办 手机桌面文件夹打不开怎么办 苹果下载不了150怎么办 iphone6速度变慢怎么办 苹果手机微信打不开pdf怎么办 苹果手机打不开pdf怎么办 pdf文件超过了怎么办 pdf电脑删不了怎么办 联想笔记本摄像头横屏调竖屏怎么办 pdf文件打开失败怎么办 pdf复制文字乱码怎么办 电子发票乱码了怎么办 超星尔雅挂了怎么办 电脑应用双击打不开怎么办 电脑控制面板打不开怎么办 转换器无法打开文件怎么办 电脑文件无法打开怎么办 手机上jpg打不开怎么办 脸上全是黄褐斑怎么办 容易发胖的体质怎么办 感冒后一直咳嗽怎么办 感冒咳嗽怎么办小窍门 到了减肥平台期怎么办 减肥遇见平台期怎么办 脚冻伤了痒怎么办 冬天脚后跟冻了怎么办 夏天脚冻了怎么办 导航软件删了怎么办 婆婆爱打孩子怎么办 乙肝婆婆带孩子怎么办 婆婆不会教孩子怎么办 婆婆不会带孩子怎么办 公婆枪带孩子怎么办