首页 > 作文

【算法】php实现排序(一)

更新时间:2023-04-07 07:02:15 阅读: 评论:0

选择排序
方式:先让第一位与其他位比较大小找到最小的数字,然后是第二位与除第一位的其他位比较大小找出第二位,依此类推

$arr = [2,45,12,67,33,5,23,132,46];for ($i=0; $i < count($arr); $i++) {    for ($j=$i+1; $j <count($arr) ; $j++) {         if($arr[$i] > $arr[$j]){    陕西考试信息网        $tmp = $arr[$i];            $arr[$i] = $arr[$j];            $arr[$j] = $tmp;        }    }}print_r($arr);

冒泡排序
方法:比较相邻两个位置的数据并进行排序
优化:添加字段 if_replace 判断该轮排序是否完成,如果完成则不再继续后面的排序

$arr = [2,45,12,67,33,5,23,132,46];$if_replace = fal;for ($i=0; $i < count(适者生存$arr); $i++) {    for ($j=0; $j < count($arr)-1; $j++) {        if($arr[$j] > $arr[$j+1]){            $tmp = $arr[$j];            $arr[$j] = $arr[$j+1];            $arr[$j+1] = $tmp;            $if_replace = true;        }    }    if(!$if_replace){        break;    }}print_r($arr);

插入排序
方法:通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入

$arr = [2,学校总结45,12,67,33,5,23,132,46];for ($i=0; $i < count($arr)-1; $i++) {     for ($j=$i+1; $j > 0; $j--) {        if($arr[$高中 作文j] < $arr[$j-1]){            $tmp = $arr[$j];            $arr[$j] = $arr[$j-1];            $arr[$j-1] = $tmp;        }el{            break;        }    }}print_r($arr);

希尔排序
方法:设待排序元素序列有n个元素,首先取一个整数increment(小于n)作为间隔将全部元素分为increment个子序列,
   所有距离为increment的元素放在同一个子序列中,在每一个子序列中分别实行直接插入排序。
   然后缩小间隔increment,重复上述子序列划分和排序工作。直到最后取increment=1,将所有元素放在同一个子序列中排序为止。

$arr = [2,45,12,67,33,5,23,132,46];$increment = count($arr);do{    $increment = floor($increment/3)+1;    for ($i=0; $i < $increment; $i++) {         $k = 0;        $j = $i;        do{            for ($m=$j+$increment; $m > 0; $m-=$increment) {                 if($arr[$m-$increment] > $arr[$m] && $arr[$m]){                    $tmp = $arr[$m];                    $arr[$m] = $arr[$m-$increment];                    $arr[$m-$increment] = $tmp;                }el{                    break;                }            }            $k++;            $j = $i+($k*$increment);        }while($j<count($arr));    }}while($increment > 1);print_r($arr);

快速排序

方法:先从数列中取出一个数作为基准数,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边,依此操作直到各区间只有一个数

$arr = [33, 24, 8, 21, 2, 23, 3, 32, 16];function quicksort($arr){    $count = count($arr);    if ($count < 2) {        return $arr;    }    $leftarray = $rightarray = array();    $middle = $arr[0];// 基准值    for ($i = 1; $i <granny 50 60 70 video $count; $i++) {        // 小于基准值,存入左边;大于基准值,存入右边        if ($arr[$i] < $middle) {            $leftarray[] = $arr[$i];        } el {            $rightarray[] = $arr[$i];        }    }    $leftarray = quicksort($leftarray);    $rightarray = quicksort($rightarray);    return array_merge($leftarray, array($middle), $rightarray);}print_r(quicksort($arr));

本文发布于:2023-04-07 07:02:13,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/151ca65a73a55dd228d405892fbd6f32.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:【算法】php实现排序(一).doc

本文 PDF 下载地址:【算法】php实现排序(一).pdf

标签:序列   基准   元素   方法
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图