原理:它是讓臨近的兩個(gè)數(shù)字之間兩兩比較,按照從小到大或者從大到小的順序進(jìn)行排列棠众。
下面我用具體的數(shù)組來(lái)演示一遍整體效果
假設(shè)有 8涛浙、5、1摄欲、9轿亮、3 五個(gè)數(shù),按照從小到大進(jìn)行排序
第一趟排序
第一次比較 8和5
交換前:<strong> 8胸墙、5</strong>我注、1、9迟隅、3
交換后:<strong> 5但骨、8</strong>、1智袭、9奔缠、3
第二次比較8和1
交換前: 5、<strong>8吼野、1</strong>校哎、9、3
交換后: 5瞳步、<strong>1闷哆、8</strong> 、9单起、3
第三次比較8和9
交換前:5抱怔、1、<strong>8 嘀倒、9</strong>屈留、3
交換后:5局冰、1、<strong>8 灌危、9</strong>康二、3
第四次比較9和3
交換前:5、1乍狐、8 赠摇、<strong>9固逗、3</strong>
交換后:5浅蚪、1、8 烫罩、<strong>3惜傲、9</strong>
看到了吧,這樣第一趟就能讓最大的數(shù)排在最后面了
第二趟排序
第一次比較5和1
交換前:<strong>5贝攒、1</strong>盗誊、8 、3隘弊、9
交換后:<strong>1哈踱、5</strong>、8 梨熙、3开镣、9
第二次比較5和8
交換前:1、<strong>5咽扇、8 </strong>邪财、3、9
交換后:1质欲、<strong>5树埠、8</strong> 、3嘶伟、9
第三次比較8和3
交換前:1怎憋、5、<strong>8九昧、3</strong> 盛霎、9
交換后:1、5耽装、<strong>3愤炸、8</strong>、9
第三趟排序
第一次比較1和5
交換前:<strong>1掉奄、5</strong>规个、3凤薛、8、9
交換后:<strong>1诞仓、5</strong>缤苫、3、8墅拭、9
第二次比較5和3
交換前:1活玲、<strong>5、3</strong>谍婉、8舒憾、9
交換后:1、<strong>3穗熬、5</strong>镀迂、8、9
第四趟排序
第一次比較1和3
交換前:<strong>1唤蔗、3</strong>探遵、5、8妓柜、9
交換后:<strong>1箱季、3</strong>、5棍掐、8藏雏、9
由以上得到,n個(gè)數(shù)塌衰,需要比 n-1趟诉稍,每 m 趟需要比較 n-m次
得到最終結(jié)果 1、3最疆、5杯巨、8、9
下面附上我的php代碼:
<?php
$data = array(8,5,1,9,3);
$lenth = count($data);
for($i=0; $i<$lenth-1; $i++){
for($j=0; $j<$lenth-$i-1; $j++){
if($data[$j]>$data[$j+1]){
$temp = $data[$j];
$data[$j] = $data[$j+1];
$data[$j+1] = $temp;
}
}
}
echo "<pre>";print_r($data);die;
?>
輸出結(jié)果如下:
這種排序比較耗時(shí)努酸,時(shí)間復(fù)雜度為O(n^2)