PHP插入排序(Insertion Sort)是一种简单直观的排序算法。
工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
比如:这个数组array(4,3,5,1,2)用冒泡排序算法进行升序排列。
第1个循环循环开始,当前排序:4,3,5,1,2(默认第1个位置已经排序,从第2个位置取数3)
第1趟:取到的数3和第1个位置比较,因为4比3大,所以把数3插入到第1个位置,原第1个位置后移一位。
得到3,4,5,1,2,同时3,4是有序序列。
第2个循环循环开始,当前排序:3,4,5,1,2(从第3个位置取数5)
第1趟:取到的数5和第2个位置数字4,因为4比5小,所以跳出循环。
得到3,4,5,1,2,同时3,4,5是有序序列
第3个循环循环开始,当前排序:3,4,5,1,2(从第4个位置取数1)
第1趟:取到的数1和第3个位置数字5,因为5比1大,所以把数1插入到第3个位置,原第3个位置后移一位。
第2趟:取到的数1和第2个位置数字4,因为4比1大,所以把数1插入到第2个位置,原第2个位置后移一位。
第3趟:取到的数1和第1个位置数字3,因为3比1大,所以把数1插入到第1个位置,原第1个位置后移一位。
得到1,3,4,5,2,同时1,3,4,5是有序序列
第4个循环循环开始,当前排序:1,3,4,5,2(从第5个位置取数2)
第1趟:取到的数2和第4个位置数字5,因为5比2大,所以把数2插入到第4个位置,原第4个位置后移一位。
第2趟:取到的数2和第3个位置数字4,因为4比2大,所以把数2插入到第3个位置,原第3个位置后移一位。
第3趟:取到的数2和第2个位置数字3,因为3比2大,所以把数2插入到第2个位置,原第2个位置后移一位。
第4趟:取到的数2和第1个位置数字1,因为1比2小,所以跳出循环。
至此排序已经完成,得到1,2,3,4,5有序序列。
PHP插入排序代码:
$a=array(4,3,5,1,2);//这里随便创建一个一维数组; $n=count($a);//算出数组的元素总个数; for($i=1; $i<$n; $i++){ $tmp = $a[$i]; for ($j = $i-1; $j >= 0; $j--){ if($a[$j] > $tmp){ $a[$j+1] = $a[$j]; $a[$j] = $tmp; }else{ break; } } } print_r($a);
目前有 0 条评论