1.你必須使用冒泡演算法嗎?如果不是的話,我給你一個簡單點的排序方法,就是循環數組,提取出A列或者B列的值及對應的數組,使用asort()根據值大小排序就將索引順序排好了,然後循環一遍對應到以前的數組(或者乾脆賦值給一個新數組);
2.考慮到你需要對B分組,然後對組內根據A排序,建議先對A排序,然後循環數組,以每個組的b列值為鍵,賦給一個新的數組,類似這樣:
foreach($arr as $k=>$v){
$result[$v[1]][] = $v;
}
然後按照1的方法對外層排序。
Ⅱ 使用PHP描述冒泡排序和快速排序演算法,對象可以是一個數組
這個主要就是用for循環做的:第一步是用第一個數字2和其他的數字比較:4,6,8,2然後用4和其他數字比較:6,8,4,2然後用6和其他數字比較:8,6,4,2最後就是8,6,4,2
Ⅲ PHP中的快速排序演算法如何實現倒序
/*
php中的快速排序,並且倒序輸出
*/
function quickSort($array)
{
if(!isset($array[1]))
return $array;
$mid = $array[0]; //獲取一個用於分割的關鍵字,一般是首個元素
$leftArray = array();
$rightArray = array();
foreach($array as $v)
{
if($v > $mid)
$rightArray[] = $v; //把比$mid大的數放到一個數組里
if($v < $mid)
$leftArray[] = $v; //把比$mid小的數放到另一個數組里
}
$leftArray = quickSort($leftArray); //把比較小的數組再一次進行分割
$leftArray[] = $mid; //把分割的元素加到小的數組後面,不能忘了它哦
$rightArray = quickSort($rightArray); //把比較大的數組再一次進行分割
return array_reverse(array_merge($leftArray,$rightArray)); //組合兩個結果後倒序排列
}
Ⅳ PHP數組算術題,誰做得多就給誰
//第一題:
//**************************************************************
$str='1,2,3,4,5,6'; //你給定的字元串
function my($str){
$item_arr=explode(',',$str);
shuffle($item_arr);
if($item_arr[3]==5){
return my($str);
}else{
for($i=0;$i<sizeof($item_arr);$i++){
if($item_arr[$i]==5 && next($item_arr)==6){
return my($str);
exit();
}
}
return $item_arr;
}
}
print_r(my($str));
//*********************************************第二題
$str="aaaabsfdsfavdchjs"; //你給出的字元串
$item=str_split($str);
$a=array_count_values($item);
foreach($a as $k=>$v){
if($v==1){
echo $k;
exit();
}
}
//*****************************************第三題
$str='12,65,110,2,3,55,79,10,45'; //這是你給定的數字字元串
$item_arr=explode(',',$str);
while(sizeof($item_arr)>0){
$max=max($item_arr);
$min=min($item_arr);
echo $max."<br/>";
echo $min."<br/>";
$max_pos=array_keys($item_arr,$max);
$min_pos=array_keys($item_arr,$min);
unset($item_arr[$max_pos[0]]);
unset($item_arr[$min_pos[0]]);
}
//****************************************第四題
$num=1234567890; //你給定的數字
echo number_format($num);
/******************************************第五題
$filename='abc.exe.jpg';
$item=pathinfo($filename);
echo $item['extension'];
/*******************************************第六題
略
/*****************************************第七,八題
第七第八題重復.
可以使用array_multisort()函數對二維數組進行排序
/*****************************************第9題
$str_low='abcdefghijklmnopqrstuvwxyz';
$str_upp='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$arr_low=str_split($str_low);
$arr_upp=str_split($str_upp);
$str= 'A journey of a thousand miles must begin with a single step.'; //你給出的字元串
$a=str_word_count($str,1);
foreach($a as $k=>$v){
$item=substr($v,-1,1);
if(in_array($item,$arr_low)){ //小寫的情況
if(strlen($v)==1){
$item=strtoupper($v);
echo $item." ";
}else{
$item=strtoupper($item);
$item_str=substr($v,0,strlen($v)-1);
$item_str=$item_str.$item;
echo $item_str." ";
}
}elseif(in_array($item,$arr_upp)){ //大寫的情況
if(strlen($v)==1){
$item=strtolower($v);
echo $item." ";
}else{
$item=strtoupper($item);
$item_str=substr($v,0,strlen($v)-1);
$item_str=$item_str.$item;
echo $item_str." ";
}
}
}
/********************************************第十題
已經看了N遍,仍然無法理解題目意思
/********************************************第十一題
$data=array(23,22,45,28);
$a=implode('',$data);
$b=str_split($a);
print_r($b);
/********************************************第十二題
體力不支,讓大家打吧.
Ⅳ 關於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>';
主要的代碼已經給你寫出來了,你自己把前端部分加上就行了
Ⅵ 用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);
//數組是值傳遞,所以傳遞的時候加個&符號就是地址傳遞,改變外部變數?>
Ⅶ 一帖看懂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);
Ⅷ php幾種排序演算法實例詳解
下面給你介紹四種排序方法:
1) 插入排序(Insertion Sort)的基本思想是:
每次將一個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子文件中的適當位置,直到全部記錄插入完成為止。實現代碼如下:
Ⅸ 用php程序編寫冒泡排序、快速排序
不要做這些作業,如果你想學好PHP的話,因為PHP有更高效的函數可以直接調用完成排序,對於學習PHP來說,知道系統函數並熟練調用才是能力,冒泡法這樣的浪費光陰的東西,不可能在任何一個PHP項目中使用。
Ⅹ 用PHP寫冒泡排序法
function bubble_sort($array)
{
$count = count($array);
if($count <= 0)
{
return false;
}
for($i=0; $i<$count; $i++)
{
for($k=$count-1; $k>$i; $k--)
{
if($array[$k] < $array[$k-1])
{
$tmp = $array[$k];
$array[$k] = $array[$k-1];
$array[$k-1] = $tmp;
}
}
}
return $array;
}
$arr = array(3, 5, 1, 4, 2);
$s = bubble_sort($arr);
print_r($s);
拿去改吧