/**
* 插入排序
* 固定首位,把下一个未排序的,与前面有序序列中的元素交换,
* 当发现前面的那个不大于自身,则不再向前判断,中止本趟,进行下趟判断
*/
function insertionSort($randArr, $length)
{
for ($i = 1; $i < $length; $i++) {
//如果当前元素,比前一个元素小,就交换
for ($j = $i; $j > 0 && $randArr[$j] < $randArr[$j - 1]; $j--) {
$temp = $randArr[$j];
$randArr[$j] = $randArr[$j - 1];
$randArr[$j - 1] = $temp;
}
}
return $randArr;
}
/**
* 优化点:
* 内层循环中,用覆盖代替了交换
* @param $randArr
* @param $length
* @return mixed
*/
function insertionSort2($randArr, $length)
{
for ($i = 1; $i < $length; $i++) {
//保存本次考查元素,
$e = $randArr[$i];
//前面有序元素,若比当前元素大,就覆盖当前元素
for ($j = $i; $j > 0 && $randArr[$j - 1] > $e; $j--) {
$randArr[$j] = $randArr[$j - 1];
}
//最后,把当前元素 覆盖 它的前一个元素
$randArr[$j] = $e;
}
return $randArr;
}
PHP插入排序
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 选择排序 对于任何输入,时间为O(n*n); 冒泡排序 最优(对于升序的数组,因为加入了一个跳出判断):O(n),...