国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 邏輯算法 > 正文

排序算法之PHP版快速排序、冒泡排序

2020-03-22 16:53:25
字體:
來源:轉載
供稿:網友
一、快速排序

1.簡介
快速排序是由東尼·霍爾所發展的一種排序算法。在平均狀況下,排序 n 個項目要Ο(n log n)次比較。在最壞狀況下則需要Ο(n2)次比較,但這種狀況并不常見。事實上,快速排序通常明顯比其他Ο(n log n) 算法更快,因為它的內部循環(inner loop)可以在大部分的架構上很有效率地被實現出來。
快速排序使用分治法(Divide and conquer)策略來把一個串行(list)分為兩個子串行(sub-lists)。
2.步驟
從數列中挑出一個元素,稱為 “基準”(pivot),
重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的后面(相同的數可以到任一邊)。在這個分區退出之后,該基準就處于數列的中間位置。這個稱為分區(partition)操作。
遞歸地(recursive)把小于基準值元素的子數列和大于基準值元素的子數列排序。
3.代碼實現
復制代碼 代碼如下:function quickSort(array $array)
{
$len = count($array);
if($len = 1)
{
return $array;
}
$key = $array[0];
$left = array();
$right = array();
for($i=1; $i $len; ++$i)
{
if($array[$i] $key)
{
$left[] = $array[$i];
}
else
{
$right[] = $array[$i];
}
}
$left = quickSort($left);
$right = quickSort($right);
return array_merge($left, array($key), $right);
}print ' pre
print_r(quickSort(array(1,4,22,5,7,6,9)));
print ' /pre
4.排序效果使用快速排序法對一列數字進行排序的過程

二、冒泡排序

1.簡介
冒泡排序(Bubble Sort,臺灣譯為:泡沫排序或氣泡排序)是一種簡單的排序算法。它重復地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重復地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個算法的名字由來是因為越小的元素會經由交換慢慢“浮”到數列的頂端。
2.步驟
比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最后一對。在這一點,最后的元素應該會是最大的數。
針對所有的元素重復以上的步驟,除了最后一個。
持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。
3.代碼實現
復制代碼 代碼如下: ?php
function bubbingSort(array $array)
{
for($i=0, $len=count($array)-1; $i $len; ++$i)
{
for($j=$len; $j --$j)
{
if($array[$j] $array[$j-1])
{
$temp = $array[$j];
$array[$j] = $array[$j-1];
$array[$j-1] = $temp;
}
}
}
return $array;
}print ' pre
print_r(bubbingSort(array(1,4,22,5,7,6,9)));
print ' /pre
4.排序過程使用冒泡排序為一列數字進行排序的過程PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 刚察县| 德昌县| 宣城市| 曲麻莱县| 棋牌| 宝鸡市| 平潭县| 八宿县| 平谷区| 海伦市| 静安区| 阿克苏市| 呼伦贝尔市| 长治市| 昔阳县| 大石桥市| 庆元县| 阿合奇县| 衡阳市| 樟树市| 体育| 荔浦县| 健康| 肇州县| 来安县| 昌乐县| 海原县| 丰台区| 客服| 眉山市| 洛阳市| 万全县| 依安县| 乌鲁木齐县| 晋州市| 新密市| 象州县| 开江县| 长寿区| 丹寨县| 兴宁市|