冒泡、二分法插入及快速排序演算法

來源:互聯網
上載者:User

1.冒泡排序演算法

過程:

1.遍曆整個數組,每兩兩相鄰的元素進行比較,如$a[$i]>$a[$i+1]則互換位置,每次比較消除一個逆序。

2.每一次迴圈後,下次再需要迴圈的次數減少1。

<?php  // 冒泡排序  $arr = createarr(20);  printarr($arr);  popsort($arr);  printarr($arr);        function createarr($num=10){      $arr = array();      for($i=0; $i<$num; $i++){          array_push($arr, mt_rand(0,999));      }      return $arr;  }        function printarr($arr){      echo 'arr:'.implode(',', $arr).'<br>';  }        function popsort(&$arr){      for($i=0,$length=count($arr)-1; $i<$length; $i++){          for($j=0; $j<$length-$i; $j++){              if($arr[$j]>$arr[$j+1]){                  $tmp = $arr[$j];                  $arr[$j] = $arr[$j+1];                  $arr[$j+1] = $tmp;              }          }      }      }  ?>

2.二分法插入排序

過程:

1.首先,原數組是一個有序序列,$low=0 $high=count($arr)-1。

2.將要插入的數與數組中間位置的元素進行比較,

如果比中間元素大,則$low=$mid+1作為下一次判斷的數組開頭。

如果比中間元素小,則$high=$mid-1作為下一次判斷的數組結尾。

3.直到$low>$high結束,$low就是新元素插入的位置。

4.將數組中從$low開始的元素全部向後移動一位,之後在$low位置插入新元素。

<?php  // 二分法插入排序        $arr = createarr(20);  $key = mt_rand(0,99);  printarr($arr);  echo 'key='.$key.'<br>';  binsort($arr, $key);  printarr($arr);        function createarr($num=10){      $arr = array();      for($i=0; $i<$num; $i++){          array_push($arr, mt_rand(0,99));      }      sort($arr); // 有序序列      return $arr;  }        function printarr($arr){      echo 'arr:'.implode(',', $arr).'<br>';  }        function binsort(&$arr, $key){            $low = 0;      $high = count($arr)-1;            while($low<=$high){          $m = $low + (int)(($high-$low)/2);          $mkey = $arr[$m];          if($key>=$mkey){              $low = $m + 1;          }else{              $high = $m - 1;          }      }            // 移動插入位置之後的元素,插入新元素      for($i=count($arr)-1; $i>=$low; $i--){          $arr[$i+1] = $arr[$i];      }            $arr[$low] = $key;  }  ?>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.