冒泡 快速排序演算法

2021-07-25 21:07:10 字數 2069 閱讀 2395

氣泡排序:

效果:

原理:簡單來說就是兩兩比較大小乙個外層迴圈裡面套乙個內層迴圈

將大的數放在最後,通過迴圈實現排序

**實現:

$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...