看板 PHP 關於我們 聯絡資訊
※ 引述《jsu (Qu'est-ce que fuck?)》之銘言: : 這個原本是個考題要求將 associated array 排序 : 必需要能依 value 或是 key 下去排 : 因為 qsort 易懂易寫,所以用 qsort 實做出來 : 這題在 PHP 上麻煩的東西主要在 PHP 的 function : 很多都會把 int 的 key 重設要小心 : 也為了這個緣故,所以不是照傳統的方式以最後的值當 pivot : 而是以 key() 隨手抓一個來用,再左右區分 : 其實題目很簡單 你用了滿多擴充的function,真正在考試的時候,那些相關的模組,是不會載入的 我拿你的範例,寫了一個,大家交流一下。 我用的是bubblesort 因應php陣列的特性,我作了一些額外的處理。 <? $list = array('apple'=>300, 'orange'=>150, 'banana'=>100, 'mango'=>330); function bs($array, $ob = 'value'){ if($ob!='value' && $ob!='key'){return NULL;} $t=NULL;$t2=NULL;$i=0; foreach($array as $k=>$v){$t[$i]['key']=$k;$t[$i]['value']=$v;$i++;} for($i=0;$i<(count($t)-1);$i++){ for($j=$i+1;$j<count($t);$j++){ if($t[$i][$ob]>$t[$j][$ob]){$t=swap($t,$i,$j);} } } foreach($t as $v){$t2[$v['key']]=$v['value'];} return $t2; } function swap($a,$k1,$k2){$t=$a[$k1];$a[$k1]=$a[$k2];$a[$k2]=$t;return $a;} var_dump(bs($list)); var_dump(bs($list,'key')); ?> -- ※ 發信站: 批踢踢實業坊(ptt.cc)
Huangs:swap function 的 array 應該改成 pass by reference 10/27 03:34
Huangs:不然每次 swap 都要 copy array,複雜度會多一個次方 10/27 03:34
arrack:那時候在測試的時候,傳址傳不過去,才改這樣XD 10/27 08:17
arrack:後來也懶得調了 10/27 08:17
※ 編輯: arrack 來自: 61.62.160.122 (10/27 17:32)