首页 > 编程语言 > 详细

php实现的冒泡,插入排序,希尔排序,归并排序

时间:2015-03-19 23:54:12      阅读:640      评论:0      收藏:0      [点我收藏+]

<?php
/**
*选择排序也就是冒泡排序,就是基于各个数据之间的对比来排序
*
*/
$arr = array(2,1,7,5,8,9,3,4,10,30,28,24);
function bubbleSort($arr) {
    $len = count($arr);
    $k = 0;
    for($i=0;$i<$len;$i++){
    $k++;
        for($j=$i+1;$j<$len;$j++) {
            if($arr[$i] > $arr[$j]) {
                $k++;
                $tmp = $arr[$i];
                $arr[$i] = $arr[$j];
                $arr[$j] = $tmp;
            }
        }
    }
    echo $k;
    return $arr;
}

print_r(bubbleSort($arr));

/**
*插入排序
*  插入排序可以避免需要排序的数据中有一部分是已经有序的树据在排序
*  判断当前位置i后边的数据是否已经有序.
*/

function insertSort($arr) {
    $len = count($arr);
    $k = 0;
    for($i=1;$i<$len;$i++) {
        $k++;
        //排序 $arr[i],$arr[$i-1],....,$arr[i-n]
        for($j=$i;$j > 0 && ($arr[$j-1] > $arr[$j]);$j--) {
            $tmp = $arr[$j-1];
            $arr[$j-1] = $arr[$j];
            $arr[$j]  = $tmp;
            $k++;
        }
    }
    echo $k;
    return $arr;
}

print_r(insertSort($arr));

/***
*希尔排序
* 希尔排序是对插入排序的优化,希尔排序对于大的乱序数据具有很好的处理能力
*
*/

function heerSort($arr) {
    $len = count($arr);
    $tmp = ‘‘;
    $h = (int)$len/2;
    $k = 0;
    while($h >=1) {
    $k++;
        for($i=$h;$i<$len;$i++) {
                $k++;//排序 $arr[i],$arr[$i-h],....,$arr[i-n*h]
            for($j=$i;$j >= $h && ($arr[$j-$h] > $arr[$j]);$j--) {
                $tmp = $arr[$j-$h];
                $arr[$j-$h] = $arr[$j];
                $arr[$j]  = $tmp;
                $k++;
            }
        }
        $h = (int)$h/2;
    }
    echo $k;
 return $arr;
}
print_r(heerSort($arr));

php实现的冒泡,插入排序,希尔排序,归并排序

原文:http://www.cnblogs.com/phplhs/p/4352189.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!