码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-03-19 23:55:01      阅读:208      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!