四種演算法,分別用氣泡排序法,快速排序法,選擇排序法,插入排序法將下面陣列中的值按照從小到大的順序進行排序。
$arr(1,43,54,62,21,66,32,78,36,76,39);
1.氣泡排序
思路分析:在要排序的一組數中,對當前還未排好的序列,從前往後對相鄰的兩個數依次進行比較和調整,讓較大的數往下沉,較小的往上冒。即,每當兩相鄰的數比較後發現它們的排序與排序要求相反時,就將它們互換。
**實現:
$arr
=array(1
,43,54
,62,21
,66,32
,78,36
,76,39
);function
bubblesort
($arr)}
}return
$arr
;}
2.選擇排序
思路分析:在要排序的一組數中,選出最小的乙個數與第乙個位置的數交換。然後在剩下的數當中再找最小的與第二個位置的數交換,如此迴圈到倒數第二個數和最後乙個數比較為止。
**實現:
function
selectsort
($arr)}
//已經確定了當前的最小值的位置,儲存到$p中。如果發現最小值的位置與當前假設的位置$i不同,則位置互換即可。if(
$p!=$i)
}//返回最終結果
return
$arr
;}
3.插入排序
思路分析:在要排序的一組數中,假設前面的數已經是排好順序的,現在要把第n個數插到前面的有序數中,使得這n個數也是排好順序的。如此反覆迴圈,直到全部排好順序。
function
insertsort
($arr
)else}}
return
$arr
;}
4.快速排序
思路分析:選擇乙個基準元素,通常選擇第乙個元素或者最後乙個元素。通過一趟掃瞄,將待排序列分成兩部分,一部分比基準元素小,一部分大於等於基準元素。此時基準元素在其排好序後的正確位置,然後再用同樣的方法遞迴地排序劃分的兩部分。
**實現:
function
quicksort
($arr
)//選擇第乙個元素作為基準
$base_num
=$arr[0
];//遍歷除了標尺外的所有元素,按照大小關係放入兩個陣列內
//初始化兩個陣列
$left_array
=array()
;//小於基準的
$right_array
=array()
;//大於基準的
for($i=
1;$i<
$length;$i
++)else
}//再分別對左邊和右邊的陣列進行相同的排序處理方式遞迴呼叫這個函式
$left_array
=quick_sort
($left_array);
$right_array
=quick_sort
($right_array);
//合併
return
array_merge
($left_array
,array
($base_num),
$right_array);
}
php四種基礎演算法 冒泡,選擇,插入和快速排序法
1.氣泡排序法 思路分析 法如其名,就是像冒泡一樣,每次從陣列當中 冒乙個最大的數出來。比如 2,4,1 第一次 冒出的泡是4 2,1,4 第二次 冒出的泡是 2 1,2,4 最後就變成這樣 實現 arr array 1,43,54,62,21,66,32,78,36,76,39 function ...
php四種基礎演算法 冒泡,選擇,插入和快速排序法
許多人都說 演算法是程式的核心,乙個程式的好於差,關鍵是這個程式演算法的優劣。作為乙個初級phper,雖然很少接觸到演算法方面的東西 但是對於氣泡排序,插入排序,選擇排序,快速排序四種基本演算法,我想還是要掌握的。下面是我按自己的理解,將四個方法分析一遍。需求 分別用 氣泡排序法,快速排序法,選擇排...
php四種基礎演算法 冒泡,選擇,插入和快速排序法
許多人都說 演算法是程式的核心,乙個程式的好與差,關鍵是這個程式演算法的優劣。作為乙個初級phper,雖然很少接觸到演算法方面的東西 但是對於氣泡排序,插入排序,選擇排序,快速排序四種基本演算法,我想還是要掌握的。下面是我按自己的理解,將四個方法分析一遍。需求 分別用 氣泡排序法,快速排序法,選擇排...