A. 一帖看懂php面試必考題:什麼是冒泡排序
//首先定義一個數組;
<?php
$arr=array(23,5,26,4,9,85,10,2,55,44,21,39,11,16,55,88,421,226,588);
// 計算數組的長度;
$n =count($arr);
// 外層循環n-1
for($h=0;$h<$n-1;$h++){
//內層循環n-h-1
for($i=0;$i<$n-$h-1;$i++){
//判斷數組大小,顛倒位置(從小往大排序,還是從大往小)
if($arr[$i]>$arr[$i+1]){
//定義空容器$kong,然後將兩個判斷中大的裝進去
$kong=$arr[$i+1];
//大的這時就空了,然後將小的裝進去
$arr[$i+1]=$arr[$i];
//然後將小的在裝到空的進去。這就實現了從小往大排序,從大往小與此相反
$arr[$i]=$kong; }
}}
最後運行結果如下:
php編程冒泡排序
完整代碼粘貼如下:
//冒泡排序
$arr=array(23,5,26,4,9,85,10,2,55,44,21,39,11,16,55,88,421,226,588);
$n =count($arr);
//echo $n;
for($h=0;$h<$n-1;$h++){//外層循環n-1
for($i=0;$i<$n-$h-1;$i++){
if($arr[$i]>$arr[$i+1]){//判斷數組大小,顛倒位置
$kong=$arr[$i+1];
$arr[$i+1]=$arr[$i];
$arr[$i]=$kong;
}
}
}
var_mp($arr);
B. PHP 怎麼用冒泡演算法進行排序呢
1.你必須使用冒泡演算法嗎?如果不是的話,我給你一個簡單點的排序方法,就是循環數組,提取出A列或者B列的值及對應的數組,使用asort()根據值大小排序就將索引順序排好了,然後循環一遍對應到以前的數組(或者乾脆賦值給一個新數組);
2.考慮到你需要對B分組,然後對組內根據A排序,建議先對A排序,然後循環數組,以每個組的b列值為鍵,賦給一個新的數組,類似這樣:
foreach($arr as $k=>$v){
$result[$v[1]][] = $v;
}
然後按照1的方法對外層排序。
C. 用PHP如何實現冒泡排序
<?php//冒泡排序方法functionbubblesort(&$arr){
//定義一個變數保存交換的值
$temp=0;
for($i=0;$i<count($arr);$i++){
for($j=0;$j<count($arr)-$i-1;$j++){
if($arr[$j]>$arr[$j+1]){
//如果前面的那個數大於後面的那個數,那麼他們就進行交換
$temp=$arr[$j];$arr[$j]=$arr[$j+1];$arr[$j+1]=$temp;
}
}
}
}
$arr=array(100,99,200,5,-4,6,-7);
bubbleSort($arr);
print_r($arr);
//數組是值傳遞,所以傳遞的時候加個&符號就是地址傳遞,改變外部變數?>
D. php二維數組如何冒泡排序對角輸出
將一維數組的改一下就可以了
假設數組是a[m][n],可以用下面的方法
for(pass=1;pass<m*n;pass++)
{
for(i=0;i<m*n-1;i++)
{
if(a[i/n][i%n]>a[(i+1)/n][(i+1)%n])
{
hold=a[i/n][i%n];
a[i/n][i%n]=a[(i+1)/n][(i+1)%n];
a[(i+1)/n][(i+1)%n]=hold;
}
}
}
其實是做了一個二維和一維間的一一映射
E. 使用PHP描述冒泡排序和快速排序演算法,對象可以是一個數組
這個主要就是用for循環做的:第一步是用第一個數字2和其他的數字比較:4,6,8,2然後用4和其他數字比較:6,8,4,2然後用6和其他數字比較:8,6,4,2最後就是8,6,4,2
F. PHP程序代碼,要用冒泡排序,然後盡量用多的自定義函數,引用 最下面那個是我添加的n_sort,用不了
<?php
$ay=array('5','8','10','6','9','3','2','4');
print_r($ay);
echo"<br/>";
$ay=number_sort($ay);
functionnumber_sort($array)
{
$ct=count($array);
for($i=0;$i<$ct;$i++)
{
for($j=$ct-1;$j>$i;$j--)
{
if($array[$j]<$array[$j-1])
{
n_sort($tmp,$array,$j);//這里錯了。$temp這個變數是哪裡來的?
}
}
}
print_r($array);
}
functionn_sort(&$tmp,$array,$j)
{
$tmp=$array[$j];
$array[$j]=$array[$j-1];
$array[$j-1]=$tmp;
}
?>
<?php
functionn_sort($array,$j)
{
$tmp=$array[$j];
$array[$j]=$array[$j-1];
$array[$j-1]=$tmp;
}
?>
G. php冒泡排序怎麼排
按照你的要求,編寫的冒泡排序的PHP程序如下
(注意因為鍵的值是字元串類型,所以按照字元大小從小到大排序)
原理是把鍵值對數組拆成鍵值的二維數組,然後根據值排序,最後再組裝成鍵值對數組
<?php
$a=Array("a"=>"107","b"=>"5448","c"=>"522");
foreach($a as $k=>$v) $d[] = array($k, $v);
for($i=0;$i<count($d)-1;$i++){
for($j=0;$j<count($d)-1-$i;$j++){
if($d[$j][1]>$d[$j+1][1]){
$temp=$d[$j];
$d[$j]=$d[$j+1];
$d[$j+1]=$temp;
}
}
}
$arr = array();
foreach($d as $v) $arr[$v[0]] = $v[1];
var_mp($arr);
?>
H. 用php程序編寫冒泡排序、快速排序
不要做這些作業,如果你想學好PHP的話,因為PHP有更高效的函數可以直接調用完成排序,對於學習PHP來說,知道系統函數並熟練調用才是能力,冒泡法這樣的浪費光陰的東西,不可能在任何一個PHP項目中使用。
I. php冒泡排序法~呢
$arr=array(1,43,54,62,21,66,32,78,36,76,39);
functiongetpao($arr)
{
$len=count($arr);//設置一個空數組用來接收冒出來的泡//該層循環控制需要冒泡的輪數
for($i=1;$i<$len;$i++)
{//該層循環用來控制每輪冒出一個數需要比較的次數
for($k=0;$k<$len-$i;$k++)
{if($arr[$k]>$arr[$k+1])
{
$tmp=$arr[$k+1];
$arr[$k+1]=$arr[$k];
$arr[$k]=$tmp;
}
}
}return$arr;
}
網頁鏈接
J. 關於PHP冒泡排序法。
前台輸入部分我就不寫了,管你是用字元串形式一起傳到後台還是說先用js存儲了再提交到後台,總之假設你前天都獲得了一個一維數組,這里給一個從大到小,一個從小到大的寫法:
從大到小:
<?php
/**
* 冒泡排序演算法示例
*/
// 這里以一維數組做演示
$demo_array = array(23,15,43,25,54,2,6,82,11,5,21,32,65);
// 第一層for循環可以理解為從數組中鍵為0開始循環到最後一個
for ($i=0;$i<count($demo_array);$i++) {
// 第二層將從鍵為$i的地方循環到數組最後
for ($j=$i+1;$j<count($demo_array);$j++) {
// 比較數組中相鄰兩個值的大小
if ($demo_array[$i] < $demo_array[$j]) {
$tmp = $demo_array[$i]; // 這里的tmp是臨時變數
$demo_array[$i] = $demo_array[$j]; // 第一次更換位置
$demo_array[$j] = $tmp; // 完成位置互換
}
}
}
// 列印結果集
echo '<pre>';
var_mp($demo_array);
echo '</pre>';
主要的代碼已經給你寫出來了,你自己把前端部分加上就行了