摘要:最后看第三位和第四位,发现左边小于右边,无需交换,最终是,,,。总结一下就是从左到右依次选中一个数和左边比较,这个数小于左边就交换,交换完在和左边比较,直到交换到比左边大了之后,换下一个数,最后数字依次处理后,数据即从小到大排序。
描述
举例4个数: 7,4,3,8
从左往右两两比较,即 7和4比较,发现7大于4,那么交换,数列变成 4,7,3,8 。
然后我们再看第2位和第三位,发现7大于3,那么交换,数列变成 4,3,7,8 。
然后再去看前两位,左边还是大于右边,那么继续交换将变成 3,4,7,8 。
最后看第三位和第四位,发现左边小于右边,无需交换,最终是 3,4,7,8 。
总结一下就是从左到右依次选中一个数和左边比较,这个数小于左边就交换,交换完在和左边比较,直到交换到比左边大了之后,换下一个数,最后数字依次处理后,数据即从小到大排序。
代码function insertSort($needSortData) { $sortDataLength = count($needSortData); //计算出待排序元素数量 for ($i = 1; $i < $sortDataLength; $i++) //外层遍历每一个待排序元素,选第二个元素开始 { for ($j = $i ; $j >0 ; $j--) {//然后和前一个数比较,直到大于左侧的数 if ($needSortData[$j] < $needSortData[$j-1]) { //找到右侧数小于左侧数,那么交换 $temp = $needSortData[$j-1]; $needSortData[$j-1]=$needSortData[$j]; $needSortData[$j]=$temp; } else { //第一次发现左侧数小于右侧数了,说明该数已经排序完毕(因为再往左都是有序数了) //那么 break 此次循环 break; } } } return $needSortData; } $unSortedData = [9, 1, 3, 8, 2, 6, 5, 7, 4]; $result=insertSort($unSortedData); print_r($result);
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/29071.html
摘要:直接插入排序是由两层嵌套循环组成的。插入排序的基本方法是每步将一个待排序的记录按其关键字的大小插到前面已经排序的序列中的适当位置,直到全部记录插入完毕为止。算法实现直接插入排序记录后移插入到正确的位置运行结果 算法引入: 在这里我们依然使用《大话数据结构》里面的一个例子: 扑克牌是我们几乎每个人都玩过的游戏。平时我们开始的时候一般都是一个人发牌,其他人都是一边摸牌,一边理牌,假如你摸上...
摘要:而在证明算法是正确的基础上,第二步就是分析算法的时间复杂度。算法的时间复杂度反映了程序执行时间随输入规模增长而增长的量级,在很大程度上能很好反映出算法的优劣与否。 showImg(https://segmentfault.com/img/remote/1460000016451712?w=800&h=341); 前言 虽然工作中,你觉得自己并没有涉及到算法这方面的东西,但是算法是程序的...
摘要:数据结构常见数据结构数组是最简单而且应用最广泛的数据结构特征使用连续内存空间来存储存放相同类型或着衍生类型的元素数组比较特别,可以存放八种数据类型通过下标来访问集合特征保存不重复的元素字典特征就是关联数组,以形式存储栈,与队列相似特征存储数 数据结构 常见数据结构 Array 数组是 最简单 而且 应用最广泛 的数据结构 特征: 1、使用连续内存空间来存储 2、存放相同类型或着衍生类型...
阅读 2283·2021-09-30 09:47
阅读 2210·2021-09-26 09:55
阅读 2938·2021-09-24 10:27
阅读 1535·2019-08-27 10:54
阅读 960·2019-08-26 13:40
阅读 2486·2019-08-26 13:24
阅读 2411·2019-08-26 13:22
阅读 1720·2019-08-23 18:38