一次循环实现插入中值位置
来源:互联网 发布:手机淘宝5.9.2旧版本 编辑:程序博客网 时间:2024/06/10 09:57
只循环一次数组,便可将要插入的值,放入到中值位置,即插入值左边的数比右边的数小;
一次循环,有两个记录,一个是本身循环的记录 $i;一个是$mid,用于记录中间值应该在的位置,
取数组的第一个元素作为分割点元素,把数组的大小按这个值,存放在两边,过程中不使用新的数组存储;
比如数组4,3,6,5,7 ;用首位的元素4把数组分为左小,右大的序列,本算法结果是:5,3,4,6,7;为什么不是35467;这是因为在一趟循环里,mid指到了5元素所在的位就是分割点的位置(43567),然后4与5(mid记录到的位)交换,就是结果了
php代码:
function quickSort2(&$arr,$start,$end){$mid = $start;for($i=$start+1;$i<$end;$i++){if($arr[$i] < $arr[$start]){//和分割点元素进行比较,小的交换放到前端$mid++;//中值位置前移,进行交换$temp = $arr[$mid];$arr[$mid] = $arr[$i];$arr[$i] = $temp;}}$temp = $arr[$start];//最后交换分割点,把元素放入到分割点的位置$arr[$start] = $arr[$mid];$arr[$mid] = $temp;}$arr = array(9,3,5,0,36,1,8,1,4,7,5,9,10);quickSort2($arr,0,count($arr));print_r($arr);
- 一次循环实现插入中值位置
- 一次循环实现百鸡百钱问题
- 三中值和插入排序混合实现快速排序
- MySQL实现循环插入功能
- Mysql实现循环插入数据
- JS实现在光标位置插入内容
- 两个forEach 外层循环一次内层也相应循环一次的实现
- 两个forEach 外层循环一次内层也相应循环一次的实现
- 插入位置
- mysql 实现while循环插入测试数据
- 循环链表的插入删除实现
- 两个循环单链表实现插入操作
- 数组中值只出现一次的数字
- 图像中值滤波实现
- 中值滤波实现
- 中值滤波 matlab实现
- 自己实现中值滤波
- 中值滤波(C++实现)
- 断点续传的原理
- Liunx/Unix scp命令详解
- 用真正的MFC 宏集,根据类名字符串动态生成!DECLARE_xxx, IMPLEMENT_xxx
- iPhone开发 在xcode4.2中sdk5.0 arc部分不开启
- SQLite 外键 级联更新 删除
- 一次循环实现插入中值位置
- Linux内存管理之高端内存映射 (2008-02-27 15:28)
- IOS Button title居中实现方法实例
- 监听EditView中的文本改变事件详解
- 关联规则在银行存取款业务中的 应用
- Eclipse的工作区设置眼睛保护色
- 重定向输入输出
- BOOL FileReverse(PCTSTR pszPathname, PBOOL pfIsTextUnicode)
- Android: 在WebView中获取网页源码