畫江湖之演算法篇 [排序演算法] 氣泡排序

Krisji發表於2019-03-20

1 氣泡排序簡介

概括:

  • 氣泡排序是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果它們的順序錯誤就把它們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢“浮”到數列的頂端

  • 特點,就是第一次的時候最大的元素到最後面。
    file

完整程式碼塊

<?php

class Sort{

    public static function bubble($arr){
        $size =  count($arr);
        for ($i=0; $i < $size ; $i++) {
            //第一次肯定把最大的移到最後,所以$j<$size-1-$i
            for ($j=0; $j < $size-1-$i ; $j++) {
                if($arr[$j]>$arr[$j+1]){
                    $tmp = $arr[$j];
                    $arr[$j]=$arr[$j+1];
                    $arr[$j+1]=$tmp;
                }
            }
        }
        return $arr;
    }
}

$arr = [9,4,6,8,17,12,44,12,56,71,21,19,81,99];

echo "<pre>";
// print_r(Sort::bubble($arr));

2 分析程式碼塊 具體分析到程式碼註釋哦 ~

冒泡

public static function bubble($arr){
        $size =  count($arr);//先取出這個陣列的大小
        for ($i=0; $i < $size ; $i++) {
            //第一次肯定把最大的移到最後,所以$j<$size-1-$i 小夥伴們 這是一個規律
            for ($j=0; $j < $size-1-$i ; $j++) {//內部迴圈$size-1-$i (陣列的總長度減去1再減去外部迴圈到第幾次)
                if($arr[$j]>$arr[$j+1]){//判斷如果當前的值大於他後面的值
                    $tmp = $arr[$j];//申明一個臨時變數 儲存當前的值
                    $arr[$j]=$arr[$j+1];//把當前的值替換成下一個值
                    $arr[$j+1]=$tmp;//把下一個值替換成臨時變數 也就是當前的值
                }
            }
        }
        return $arr;//返回排序完的陣列
    }

3 分析下 時間複雜度 參考下!

file

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章