一、插入排序
1.1 直接插入排序
基本思想:每次將乙個待排序額記錄按其關鍵碼的大小插入到乙個已經排好序的有序序列中,直到全部記錄排好序。
**測試:
$sort = [39,42];
$arr = [22,10,9,50];
foreach($arr as $v)
$sort[$j+1] = $sort[$j];
$sort[$j] = $v;
$j--;
}}var_dump($sort);
/* array (size=6)
0 => int 9
1 => int 10
2 => int 22
3 => int 39
4 => int 42
5 => int 50 */
1.2 希爾排序(待續。。。)
二、選擇排序
2.1 簡單選擇排序(****** selection sort)
基本思想:在要排序的一組數中,選出最小(或者最大)的乙個數與第1個位置的數交換;然後在剩下的數當中再找最小(或者最大)的與第2個位置的數交換,依次類推,直到第n-1個元素(倒數第二個數)和第n個元素(最後乙個數)比較為止。
**測試:
$arr = [3,4,2,9,5,1,8];
$count = count($arr);
for($i = 0;$i < $count; $i++)
}// echo '';}
var_dump($arr);
/* array (size=7)
0 => int 1
1 => int 2
2 => int 3
3 => int 4
4 => int 5
5 => int 8
6 => int 9 */
2.2 堆排序(待續。。。)
三、交換排序
3.1 氣泡排序
基本思想:
在要排序的一組數中,對當前還未排好序的範圍內的全部數,自上而下對相鄰的兩個數依次進行比較和調整,讓較大的數往下沉,較小的往上冒。即:每當兩相鄰的數比較後發現它們的排序與排序要求相反時,就將它們互換。
**測試:
$arr = [3,4,2,9,5,1,8];
$c = count($arr);
for($i = 0; $i < $c; $i++)
}}var_dump($arr);
/* array (size=7)
0 => int 1
1 => int 2
2 => int 3
3 => int 4
4 => int 5
5 => int 8
6 => int 9 */
排序 排序演算法整理
經常零零散散的用到排序演算法,將幾類常見的總結下來 時間複雜度o n 2 空間複雜度o 1 穩定排序 param arr public static void insersort int arr else arr j 1 tmp 氣泡排序 時間複雜度 o n 2 空間複雜度o 1 穩定排序 para...
排序演算法學習筆記整理
1 氣泡排序 依次比較相鄰元素的值,若發現逆序則交換,使值較大的元素逐漸從前移向後部 或者後部 2 選擇排序 以首元素開始為要交換的元素,迴圈找到未排序的元素中最小的元素與要交換的元素進行交換。要交換元素為未排序元素的第乙個,每次加一。主要 3 插入排序 把待排序的元素看成 以第乙個元素看成乙個無序...
排序演算法整理
template void cinsertsort mysort function compare template void cselectsort mysort function compare swap datas i datas id void cshellsort mysort funct...