二分查詢,氣泡排序, 快速排序

2022-05-16 22:07:38 字數 1809 閱讀 9773

<?php

class

test

if ($start + 1 >= $end

) else

}$mid = $start + intval(($end - $start)/ 2);

if ($arr[$mid] === $x

) elseif ($arr[$mid] > $x

) elseif ($arr[$mid

< $x

]) }

/*** 氣泡排序

* 思路:

* * 如原始有x個值需要排序

* * 控制最大的值一直往右移動,第一次迴圈必然造成最大的值會在最右側

* * 重複以上過程,冒泡 x-1, x-2, x-3...之間的值

* @param $arr array 需排序的陣列

* @return array 排序結果

*/public

function bubblesort($arr

) }

}return

$arr

; }

/*** 氣泡排序2

* 實現思路2,遞迴

* @param $arr array 需排序的陣列

* $param $lastindexer int|null 需檢測的最大索引

* @return array 排序結果

*/public

function bubblesort2($arr, $lastindexer = null

)

if ($lastindexer === 0)

for($i = 0; $i

< $lastindexer; $i++)

}return

$this->bubblesort2($arr, $lastindexer - 1);

}/**

* 快速排序

* @param $arr

*/public

function quicksort($arr

) else

}//分別對更小的以及更大的數進行快速排序

$min = $this->quicksort($min

);

$max = $this->quicksort($max

);

return

array_merge($min, [$mid], $max

); }

else

}}$test = new

test();

//二分查詢

$arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];

$x = 10;

$index = $test->binarysearch($x, $arr

);var_dump($index

);//

氣泡排序

$arr2 = [2, 3, 1, 6, 9, 8, 0, 5, 4, 7];

$bubbleresult = $test->bubblesort($arr2

);print_r($bubbleresult

);$bubbleresult2 = $test->bubblesort2($arr2

);print_r($bubbleresult2

);//

快速排序

$quicksort = $test->quicksort($arr2

);print_r($quicksort);

氣泡排序,快速排序,選擇排序,二分查詢

氣泡排序原理 每一趟只能將乙個數歸位,如果有n個數進行排序,只需將n 1個數歸位,也就是說要進行n 1趟操作 已經歸位的數不用再比較 每一次都是得到比較列表中最大的數。氣泡排序演算法及其優化 氣泡排序的基本特徵是只能交換相鄰的元素。從下邊界開始,一趟掃瞄下來,可以把當前最大值頂到上邊界 如果沒有發生...

php 氣泡排序 快速排序 二分查詢

氣泡排序 class getnum return arr 快速排序 一般以第乙個元素為準 大於這個元素放左邊 小於這個元素放右邊 class quicknum b arr 0 for i 1 igetquicknum arr left arr right this getquicknum arr r...

氣泡排序 二分查詢

include include include using namespace std int bsearch int t,int n,int x 二分查詢 return null inline void swap int a,int b void init int t,int n for int ...