花几分钟轻松搞定快速排序算法
2017-11-18 03:26
387 查看
//快速排速算法,使用迭代 array待排序的数组, s是数组的首索引,t是最后一个元素索引 void QuickSort(int[] array, int s, int t) { //定义变量保存被排序的数组索引 int i = s, j = t; //一个元素就没有必要排序了吧,所以索引s必须小于t if(s < t) { //开始默认数组第一个记录做了基准点 //什么意思呢,就是我们这个做为一个点,让其左边的都小于他,右边都大于他 int temp = array[i]; //开始两端扫描比较大小 while(i != j) //只要i!=j 说明我们两端扫描就还没完 { while(j >= i) //开启从右端到左边的扫描 { if(array[j] > temp) { //开始左移动下标 j--; } else { //那么需要移动当前基准点到当前比较的元素对应的索引处 //我们把j索引对应的元素移动到了i处,那么j处就空了一个位置 array[i] = array[j]; break; } } //开始找大的填到j里 while(i < j) //开启从左边到右边的扫描 { if(array[i] < temp) { i++; //移动到下个元素 }else { //说明找到了比基准元素大的,那么我们就把当前这个大的数移动到上次留下的坑 4000 array[j] = array[i]; break; //并且要结束循环 } } } } //执行到这来说明i == j了,说明我们扫描已经到了一个元素了那么这个元素肯定是空的 array[i] = temp; //现在我们已经把基准点放在了正确位置,因为这个时候左边的全部小于他,右边的全部大于他 //既然这个数搞定了,那么我们现在来排序这个数的两侧,我们用递归把,性质相同 //左边递归 QuickSort(array,s,j - 1); //右边递归 QuickSort(array,j + 1,t); }
相关文章推荐
- SmartAssembly,用一行代码和简单的配置文件,几分钟轻松搞定客户端软件的自动升级。
- 转:轻松搞定面试中的红黑树问题
- 【手机摄影】1分钟轻松搞定8个手机摄影技巧
- 轻松搞定验证码刷新
- 三分钟掌握“职责链模式”——轻松搞定设计模式
- 轻松搞定数据访问层2
- ASP.NET2.0轻松搞定统计图表
- 轻松搞定JSONP跨域请求
- Perl帮MM轻松搞定Excel数据
- 利用IProgress轻松搞定进度条编程
- 轻松搞定CentOS+Nginx+PHP+MySQL标准生产环境
- 12步轻松搞定python装饰器
- 使用BleLib的轻松搞定Android低功耗蓝牙Ble 4.0开发详解
- ASP.NET2.0轻松搞定统计图表
- 十招轻松搞定社会媒体
- 无需软件,笔记本自带wifi功能,几条命令轻松搞定
- 轻松搞定ExtJs 3.4
- 大型宴席如何安排座位?SocialTables帮你轻松搞定
- [置顶] 两步轻松搞定 Apache 本地虚拟主机设置
- Win7系统安装PHPnow的解决方法,让你 轻松搞定