描述示例4个数:7,4,3,8从左到右成对比较,即比较7和4,发现7大于4,然后交换,序列变为4,7,3,8。然后我们看第二个和第三个数字,发现7大于3,然后交换,序列变成4,3,7,8。然后看前两位数,左边还是大于右边,再继续交换就变成了3,4,7,8。最后看第三、四位数字,发现左边比右边小,不用交换,最后是3、4、7、8。综上,从左到右选一个数右侧并将其与左侧进行比较。如果数字小于左边,交换它。交换后,将其与左侧进行比较。交换大于左边后,换另一个数。最后一个数依次处理后,数据从小到大排序。代码函数insertSort($needSortData){$sortDataLength=count($needSortData);//计算待排序元素个数($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;}}}返回$needSortData;}$unSortedData=[9,1,3,8,2,6,5,7,4];$result=insertSort($unSortData);print_r($result);
