冒泡排序和选择排序

来源:互联网 发布:那些大网站用的cn域名 编辑:程序博客网 时间:2024/06/18 06:45

给一个一维数组排序的两种基本算法:

一、冒泡排序:对数组单元进行相邻两两比较,相邻元素满足条件则相互交换,循环一次在数组最右端得到本次循环的最大值

具体代码实现如下:

// 冒泡排序function bubbling($arr) {    // 判断传过来的是否是一个数组    if(!is_array($arr)) {        return false;    }    // 获取数组的长度    $len = count($arr);    // 如果数组的<=1,说明不许排序    if($len <= 1) {        return $arr;    }    for($i=1;$i<$len;$i++) { // 控制循环次数        for($j=0;$j<$len-$i;$j++) {            if($arr[$j]>$arr[$j+1]) {                $tmp = $arr[$j];                $arr[$j] = $arr[$j+1];                $arr[$j+1] = $tmp;            }        }    }    return $arr;}// 测试$arr = array(12,3,53,23,77,43,11);var_dump(bubbling($arr));


二、选择排序:每次循环,获取当前没有排好序中最小元素与数组最左端的元素进行交换

具体代码实现如下:

function chooice($arr) {// 判断传过来的是否是一个数组    if(!is_array($arr)) {        return false;    }    // 获取数组的长度    $len = count($arr);    // 如果数组的<=1,说明不许排序    if($len <= 1) {        return $arr;    }    for($i=0;$i<$len-1;$i++) {    for($j=$i+1;$j<=$len-1;$j++) {    if($arr[$i]>$arr[$j]) {    $tmp = $arr[$i];    $arr[$i] = $arr[$j];    $arr[$j] = $tmp;    }    }    }    return $arr;}// 测试$arr = array(7,2,4,3,8,6);var_dump(chooice($arr));


0 0
原创粉丝点击