本文采用PHP插入
排序法实现数组排序,供大家
参考,具体分析如下:
的插入排序
方法的基本思想是通过案例说明,或由$ ARR =阵列(2,6,3,9),从大到小。
实现原理:假设(不是创造),有一个有序数组arr =阵列(2),这与$ ARR { 1 } = 6相比,如果6 > 2从$ ARR { 0 } $ ARR { 1 }位置转移,6插入ARR { 0美元}的位置。然后,相比美元ARR { 2 } = 3美元和ARR { 1 } = 2, 3 > 2继续移动至ARR { 2 }
位置后ARR { 1 } = 2美元。原来的$ ARR { 3 } = 3插入$ ARR { 1 }的位置,然后继续插入9的位置。最终的结果是(9,6,3,2)。同样是通过计数达到($ ARR)- 1周期。
码律分析:
第一个大循环:1 { }到0 { }的比率;
第二个大循环:2 { }到1 { }的比率,以及{ 1 }到0 { }的比率;
第三个大循环:3 { }到2 { }的比率,{ 2 }到1 { }的比率,以及{ 1 }到0 { }的比率;
php代码,使用一个
函数包使其易于使用
< PHP
函数插入排序($ ARR){
为($我= 1;$我<计数($ ARR);$ i++){
/ / insertval美元是要插入的数
对于($ = $ i;$ j 0;$ j){
如果($ ARR { $ J } > $ ARR { $ J-1 }){
insertval美元美元美元= { }度{J}.;
ARR { } = J美元美元美元美元J-1 ARR { };
ARR { } =美元美元美元insertval J-1;
}
}
}
}
myarr美元=阵列(2,6,3,9);
InsertSort(myarr美元);
;
print_r($ myarr);
>
代码实现分析:
第一次大循环:
我= 1阵列(2,6,3,9)
J = 1
执行6和2:$ ARR { 1 } = 2;$ ARR { 0 } = 6,得到(6,2,3,9)
第二次大循环:
我= 2阵列(6,2,3,9)
J = 2执行3和2:变成$ ARR { 2 } = 2,$ ARR { 1 } = 3,得到(6,3,2,9)
J,J = 1执行$ ARR { 1 }和{ 0 }比ARR美元:
条件不成立
第三大循环:
我= 3阵列(6,3,2,9)
J = 3执行9和2:变成$ ARR { 3 } = 2,$ ARR { 2 } = 9,得到(6,3,9,2)
J,J = 2执行9、3美元:成为ARR { 2 } = 3,$ ARR { 1 } = 9,(6,9,3,2)
J,J = 1执行9、6美元:成为ARR { 1 } = 5,$ ARR { 0 } = 9,(9,6,3,2)
希望本文能对大家的PHP
程序设计有所帮助。