在我們學程序時就知道排序大概有泡排序法、快速排序法、選擇排序法等,同時排序方法 分為兩在類內部和外部。
數組的排序方法
分為兩在類:
1、內(內存)部排序
2、外部排序(數據量很大,內存放不下,需要借助外部
存儲)
----------------
排序sorting是一個程序員的基本功
一:內部排序
(1)交換式排序
1、冒泡法
數組默認的傳遞是值傳遞,而不是地址傳遞
後面將講到對象類型,對象默認的傳遞就是地址傳遞
//優化,將冒泡排序法封裝成函數,利於以後使用
代碼如下 復制代碼function bubbleSort(&$myarr){
$temp=0;//定義一個中間變量
//外層循環
for($i=0;$i<count($myarr)-1;$i++){
for($j=0;$j<count($myarr)-1-$i;
$j++){
if($myarr[$j]>$myarr[$j
+1]){
$temp=$myarr[$j];
$myarr[$j]=
$myarr[$j+1];
$myarr[$j+1]=
$temp;
}
}
}
}
$arry=array(2,6,-4,7,9,0);
bubbleSort($arry);
print_r($arry);
2、快速排序法(神奇的快速,涉及到遞歸)
3、選擇排序法
代碼如下 復制代碼function selectSort(&$myarr){
$temp=0;
for($i=0;$i<count($myarr)-1;$i++){
//假設$i就是最小的數
$minval=$myarr[$i];
//記錄我認為的最小數的下標
$minIndex=$i;
for($j=$i+1;$j<count($myarr);$j+
+){
//說明我們認為的最小值,不是最小
if($minval>$myarr[$j]){
$minval=$myarr[$j];
$minIndex=$j;
}
}
//最後交換
$temp=$myarr[$i];
$myarr[$i]=$myarr[$minIndex];
$myarr[$minIndex]=$temp;
}
}
4、插入排序法
查詢速度:冒泡排序法<選擇排序法<插入排序法
個人最喜歡用的是交換排序了,就是大家說的泡泡排序法了,這種方法比較好用,但不適於大數據量的排序。