氣泡排序:
效果:
原理:簡單來說就是兩兩比較大小乙個外層迴圈裡面套乙個內層迴圈
將大的數放在最後,通過迴圈實現排序
**實現:
$arr=array(1,43,54,62,21,66,32,78,36,76,39);
function getpao($arr)
}} return $arr;
}
print_r(getpao($arr));
結果:array( [0] => 1 [1] => 21 [2] => 32 [3] => 36 [4] => 39 [5] => 43 [6] => 54 [7] => 62 [8] => 66 [9] => 76 [10] => 78)
快速排序:
示例圖:
原理:重點就是遞迴
選中乙個元素為根,其他元素通過與選中元素對比大小,放入對應的陣列中,在遞迴呼叫本身將放好的陣列進行排序,最後進行合併,從而達到排序的效果
**:
$arr=array(1,43,54,62,21,66,32,78,36,76,39);
function quick_sort($arr)
//如果沒有返回,說明陣列內的元素個數 多餘1個,需要排序
//選擇乙個標尺
//選擇第乙個元素
$base_num = $arr[0];
//遍歷 除了標尺外的所有元素,按照大小關係放入兩個陣列內
//初始化兩個陣列
$left_array = array();//小於標尺的
$right_array = array();//大於標尺的
for($i=1; $i
}//再分別對 左邊 和 右邊的陣列進行相同的排序處理方式
//遞迴呼叫這個函式,並記錄結果
$left_array = quick_sort($left_array);
$right_array = quick_sort($right_array);
//合併左邊 標尺 右邊
return array_merge($left_array, array($base_num), $right_array);
}$li = quick_sort($arr);
print_r($li);
結果:y( [0] => 1 [1] => 21 [2] => 32 [3] => 36 [4] => 39 [5] => 43 [6] => 54 [7] => 62 [8] => 66 [9] => 76 [10] => 78)
二分查詢(二叉樹也時同樣的原理)
就是將排序好的資料通過對半來更加快速的查詢到目標
二分查詢:
1,2,3,4,5,6,7
我現在要查詢7
我先取出中間數 4
判斷下是不是要找的數字,發現小了
就去右邊查詢
然後取出右邊的所有的數
取出她們幾個的中間數 6
發現還小了
繼續找右邊的陣列
找到7了 ok了!!!
最差的一種情況就是這個數字不存在 ====
1 <?php
2 #二分查詢
3 function binarysearch(array $arr, $target)
16
17 #查詢失敗
18 return false;
19 }
20
21 $arr = array(1, 3, 5, 7, 9, 11);
22 $inx = binarysearch($arr, 1);
23 var_dump($inx);
24 ?>
快速 氣泡排序演算法
排序演算法簡單介紹 1.氣泡排序 思路 1 先用第乙個與後面的元素依次比較,如果第乙個大於某個元素,就交換他們的值 2 然後再用第二個與後面的元素依次比較,如果它大於,就交換值 3 重複操作,直到最後乙個值結束,得到的新陣列就是有序的了 import random data random.randi...
氣泡排序和快速排序演算法
氣泡排序 原理 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。實現 public...
php排序演算法 氣泡排序,快速排序
氣泡排序實現原理 首先將所有待排序的數字放入工作列表中。從列表的第乙個數字到倒數第二個數字,逐個檢查 若某一位上的數字大於他的下一位,則將它與它的下一位交換。重複步驟 直至再也不能交換。實現 複製 如下 氣泡排序 by www.jbxue.com function bubbingsort array...