php实现 冒泡排序,插入排序,选择排序

冒泡排序

冒泡排序只会操作相邻的两个数据。每次冒泡操作都会对相邻的两个元素进行比较,看是否满足 大小关系要求。如果不满足就让它俩互换。一次冒泡会让至少一个元素移动到它应该在的位置, 重复n次,就完成了n个数据的排序工作。

$array = [5,4,6,9,1,4,4,9];
for ($i=0; $i<count($array); $i++) {
    $flag = true;
    for($j=0; $j<count($array)-$i-1; $j++) {
        $m = $array[$j];
        $n = $array[$j+1];
        if ($m>$n) {
            $array[$j] = $n;
            $array[$j+1] = $m;
            $flag = false;
        }
    }

    if($flag==true) {
        break;
    }

}

插入排序

插入排序,把数组分为两部分,已排部分和未排部分。初始已排部分是数组的第一个元素,然后循环数组未排部分,和已排部分逐个比较,插入到合适的位置。未排部分循环完,算法结束。

$array = [5,4,6,9,1,4,4,9];
for ($i=1; $i<count($array); $i++) {
       $m = $array[$i];
       for ($j=$i;$j>=0; $j--) {
            if($array[$j]>$m) {
                $array[$j+1] = $array[$j];
                $array[$j] = $m;
            }
       }
}

选择排序

选择排序算法的实现思路有点类似插入排序,也分已排序部分和未排序部分。但是选择排序每次 会从未排序部分中找到最大的元素,将其放到已排序部分的末尾。

$array = [5,4,6,9,1,4,4,9];
for ($i=0; $i<count($array); $i++) {
  $m = $i;
  for($j=$i+1; $j<count($array); $j++){
  if($array[$m]>$array[$j]) {
  $m = $j;
  }
 }
 $n = $array[$i];
  $array[$i] = $array[$m];
  $array[$m] = $n;

}
本作品采用《CC 协议》,转载必须注明作者和本文链接
jiangjun
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!