PHP的簡易冒泡法代碼分享
更新時(shí)間:2012年08月28日 23:38:36 作者:
基礎(chǔ)的東西,感覺代碼還不夠簡潔,希望高手指導(dǎo)修改,腳本之家特為大家多準(zhǔn)備了幾個(gè),方便測試學(xué)習(xí)
很基礎(chǔ)的東西,感覺代碼還不夠簡潔,希望高手指導(dǎo)修改
<?php
function BubbleSort($str){
for($i=0;$i<count($str);$i++){//從數(shù)組末尾取一個(gè)值;
for ($k=count($str)-2;$k>=$i;$k--){//將這個(gè)值向前冒泡;
if($str[$k+1]<$str[$k]){ //將小于號(hào)改為大于號(hào),就是降序排列;
$tmp=$str[$k+1];
$str[$k+1]=$str[$k];
$str[$k]=$tmp;
}
}
}
return $str;
}
//以下是測試
$str=array(5,8,2,6,10,0,3,12,11);
print_r(BubbleSort($str));
?>
php 冒泡排序2
基本概念是:依次比較相鄰的兩個(gè)數(shù),將小數(shù)放在前面,大數(shù)放在后面。即首先比較第1個(gè)和第2個(gè)數(shù),將小數(shù)放前,大數(shù)放后。然后比較第2個(gè)數(shù)和第3個(gè)數(shù),將小數(shù)放前,大數(shù)放后,如此繼續(xù),直至比較最后兩個(gè)數(shù),將小數(shù)放前,大數(shù)放后。重復(fù)以上過程,仍從第一對(duì)數(shù)開始比較(因?yàn)榭赡苡捎诘?個(gè)數(shù)和第3個(gè)數(shù)的交換,使得第1個(gè)數(shù)不再小于第2個(gè)數(shù)),將小數(shù)放前,大數(shù)放后,一直比較到最大數(shù)前的一對(duì)相鄰數(shù),將小數(shù)放前,大數(shù)放后,第二趟結(jié)束,在倒數(shù)第二個(gè)數(shù)中得到一個(gè)新的最大數(shù)。如此下去,直至最終完成排序。
由于在排序過程中總是小數(shù)往前放,大數(shù)往后放,相當(dāng)于氣泡往上升,所以稱作冒泡排序。
用二重循環(huán)實(shí)現(xiàn),外循環(huán)變量設(shè)為i,內(nèi)循環(huán)變量設(shè)為j。外循環(huán)重復(fù)9次,內(nèi)循環(huán)依次重復(fù) 9,8,...,1次。每次進(jìn)行比較的兩個(gè)元素都是與內(nèi)循環(huán)j有關(guān)的,它們可以分別用a[j]和a[j+1]標(biāo)識(shí),i的值依次為1,2,...,9,對(duì)于每一個(gè)i, j的
值依次為1,2,...10-i。
<?php
function asc($a)
{
for($i=0;$i<count($a)-1;$i++)
{
for($j=0;$j<count($a)-1;$j++)
{
if($a[$j]>$a[$j+1])
{
$tmp=$a[$j+1];
$a[$j+1]=$a[$j];
$a[$j]=$tmp;
}
}
}
print_r($a);
}
$a = array(9,8,17,6,26,4,33,2,1);
print_r(asc($a));
?>
<br />
<?php
function desc($a)
{
$c=array();
for($i=count($a)-1;$i>0;$i--)
{
for($j=0;$j<count($a)-1;$j++)
{
if($a[$j]<$a[$j+1])
{
$tmp=$a[$j+1];
$a[$j+1]=$a[$j];
$a[$j]=$tmp;
}
}
}
print_r($a);
}
$arr=array(33,24,56,55,59);
desc($arr);
?>
PHP冒泡排序法演示
以前面試的時(shí)候考官出的筆試題,覺得比較XX,寫程序應(yīng)該是在計(jì)算機(jī)上面,而不是在筆頭上。
PHP程序文件sort_bubble_up.php
<html>
<head><title>冒泡排序法演示</title><head>
<link rel="stylesheet" href="sort.css">
<body>
<h1>冒泡排序法演示</h1>
<table cellpadding="5" cellspacing="1" border="0" align="center">
<?php
//隨機(jī)生成數(shù)組
$arr=array();
echo '<tr><td colspan="10" class="title">初始值</td></tr>';
echo '<tr>';
for($i=0;$i<10;$i++){
$arr[$i]=rand();
echo "<td>\$arr[$i]={$arr[$i]}</td>";
}
//進(jìn)行冒泡法排序
for($i=9;$i>0;$i--){
echo '<tr><td colspan="10" class="title">第'.(10-$i).'次</td></tr>';
for($j=0;$j<$i;$j++){
if($arr[$j]<$arr[$j+1]){
$tmp=$arr[$j];
$arr[$j]=$arr[$j+1];
$arr[$j+1]=$tmp;
}
echo '<tr>';
for($k=0;$k<10;$k++){
switch($k){
case $j : echo '<td class="base">'; break;
case $j+1 : echo '<td class="light">'; break;
default : echo '<td>';
}
echo "\$arr[$k]={$arr[$k]}</td>";
}
echo '</tr>';
}
}
//顯示排序結(jié)果
echo '<tr><td colspan="10" class="title">結(jié)果</td></tr>';
echo '<tr>';
for($i=0;$i<10;$i++){
echo "<td>\$arr[$i]={$arr[$i]}</td>";
}
echo '</tr>';
?>
</table>
</body></html>
樣式表文件sort.css
h1{text-align: center; color: blue;}
table{font-size: 12px; font-family: arial; background-color: black; text-align: center;}
td{background-color: white;}
.base{background-color: #0FF;}
.light{background-color: #0DD;}
.title{background-color: #3FF; text-align: center;}
復(fù)制代碼 代碼如下:
<?php
function BubbleSort($str){
for($i=0;$i<count($str);$i++){//從數(shù)組末尾取一個(gè)值;
for ($k=count($str)-2;$k>=$i;$k--){//將這個(gè)值向前冒泡;
if($str[$k+1]<$str[$k]){ //將小于號(hào)改為大于號(hào),就是降序排列;
$tmp=$str[$k+1];
$str[$k+1]=$str[$k];
$str[$k]=$tmp;
}
}
}
return $str;
}
//以下是測試
$str=array(5,8,2,6,10,0,3,12,11);
print_r(BubbleSort($str));
?>
php 冒泡排序2
基本概念是:依次比較相鄰的兩個(gè)數(shù),將小數(shù)放在前面,大數(shù)放在后面。即首先比較第1個(gè)和第2個(gè)數(shù),將小數(shù)放前,大數(shù)放后。然后比較第2個(gè)數(shù)和第3個(gè)數(shù),將小數(shù)放前,大數(shù)放后,如此繼續(xù),直至比較最后兩個(gè)數(shù),將小數(shù)放前,大數(shù)放后。重復(fù)以上過程,仍從第一對(duì)數(shù)開始比較(因?yàn)榭赡苡捎诘?個(gè)數(shù)和第3個(gè)數(shù)的交換,使得第1個(gè)數(shù)不再小于第2個(gè)數(shù)),將小數(shù)放前,大數(shù)放后,一直比較到最大數(shù)前的一對(duì)相鄰數(shù),將小數(shù)放前,大數(shù)放后,第二趟結(jié)束,在倒數(shù)第二個(gè)數(shù)中得到一個(gè)新的最大數(shù)。如此下去,直至最終完成排序。
由于在排序過程中總是小數(shù)往前放,大數(shù)往后放,相當(dāng)于氣泡往上升,所以稱作冒泡排序。
用二重循環(huán)實(shí)現(xiàn),外循環(huán)變量設(shè)為i,內(nèi)循環(huán)變量設(shè)為j。外循環(huán)重復(fù)9次,內(nèi)循環(huán)依次重復(fù) 9,8,...,1次。每次進(jìn)行比較的兩個(gè)元素都是與內(nèi)循環(huán)j有關(guān)的,它們可以分別用a[j]和a[j+1]標(biāo)識(shí),i的值依次為1,2,...,9,對(duì)于每一個(gè)i, j的
值依次為1,2,...10-i。
復(fù)制代碼 代碼如下:
<?php
function asc($a)
{
for($i=0;$i<count($a)-1;$i++)
{
for($j=0;$j<count($a)-1;$j++)
{
if($a[$j]>$a[$j+1])
{
$tmp=$a[$j+1];
$a[$j+1]=$a[$j];
$a[$j]=$tmp;
}
}
}
print_r($a);
}
$a = array(9,8,17,6,26,4,33,2,1);
print_r(asc($a));
?>
<br />
<?php
function desc($a)
{
$c=array();
for($i=count($a)-1;$i>0;$i--)
{
for($j=0;$j<count($a)-1;$j++)
{
if($a[$j]<$a[$j+1])
{
$tmp=$a[$j+1];
$a[$j+1]=$a[$j];
$a[$j]=$tmp;
}
}
}
print_r($a);
}
$arr=array(33,24,56,55,59);
desc($arr);
?>
PHP冒泡排序法演示
以前面試的時(shí)候考官出的筆試題,覺得比較XX,寫程序應(yīng)該是在計(jì)算機(jī)上面,而不是在筆頭上。
PHP程序文件sort_bubble_up.php
復(fù)制代碼 代碼如下:
<html>
<head><title>冒泡排序法演示</title><head>
<link rel="stylesheet" href="sort.css">
<body>
<h1>冒泡排序法演示</h1>
<table cellpadding="5" cellspacing="1" border="0" align="center">
<?php
//隨機(jī)生成數(shù)組
$arr=array();
echo '<tr><td colspan="10" class="title">初始值</td></tr>';
echo '<tr>';
for($i=0;$i<10;$i++){
$arr[$i]=rand();
echo "<td>\$arr[$i]={$arr[$i]}</td>";
}
//進(jìn)行冒泡法排序
for($i=9;$i>0;$i--){
echo '<tr><td colspan="10" class="title">第'.(10-$i).'次</td></tr>';
for($j=0;$j<$i;$j++){
if($arr[$j]<$arr[$j+1]){
$tmp=$arr[$j];
$arr[$j]=$arr[$j+1];
$arr[$j+1]=$tmp;
}
echo '<tr>';
for($k=0;$k<10;$k++){
switch($k){
case $j : echo '<td class="base">'; break;
case $j+1 : echo '<td class="light">'; break;
default : echo '<td>';
}
echo "\$arr[$k]={$arr[$k]}</td>";
}
echo '</tr>';
}
}
//顯示排序結(jié)果
echo '<tr><td colspan="10" class="title">結(jié)果</td></tr>';
echo '<tr>';
for($i=0;$i<10;$i++){
echo "<td>\$arr[$i]={$arr[$i]}</td>";
}
echo '</tr>';
?>
</table>
</body></html>
樣式表文件sort.css
復(fù)制代碼 代碼如下:
h1{text-align: center; color: blue;}
table{font-size: 12px; font-family: arial; background-color: black; text-align: center;}
td{background-color: white;}
.base{background-color: #0FF;}
.light{background-color: #0DD;}
.title{background-color: #3FF; text-align: center;}
相關(guān)文章
PHP生成驗(yàn)證碼時(shí)“圖像因其本身有錯(cuò)無法顯示”的解決方法
以下是對(duì)PHP生成驗(yàn)證碼時(shí)“圖像因其本身有錯(cuò)無法顯示”的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下2013-08-08php使用高斯算法實(shí)現(xiàn)圖片的模糊處理功能示例
這篇文章主要介紹了php使用高斯算法實(shí)現(xiàn)圖片的模糊處理功能,結(jié)合實(shí)例形式分析了php圖形處理的相關(guān)操作技巧,需要的朋友可以參考下2016-11-11比較簡單實(shí)用的PHP無限分類源碼分享(思路不錯(cuò))
關(guān)于PHP的無限分類代碼,網(wǎng)上已經(jīng)有很多了,講解的也很到位,在這里我分享一下我用著很順手的一個(gè)2011-10-10PHP調(diào)用MySQL的存儲(chǔ)過程的實(shí)現(xiàn)代碼
MySQL好像從5.0開始才引入存儲(chǔ)過程,反正以前做應(yīng)用的時(shí)候從沒碰過,不過現(xiàn)在因?yàn)橹饕鲀?nèi)部系統(tǒng)2008-08-08詳解PHP結(jié)構(gòu)型設(shè)計(jì)模式之橋接模式Bridge Pattern
橋接,顧名思義,就是用來連接兩個(gè)部分,使得兩個(gè)部分可以互相通訊。橋接模式將系統(tǒng)的抽象部分與實(shí)現(xiàn)部分分離解耦,使他們可以獨(dú)立的變化。本文通過示例詳細(xì)介紹了橋接模式的原理與使用,需要的可以參考一下2023-04-04Yii2——使用數(shù)據(jù)庫操作匯總(增刪查改、事務(wù))
本篇文章主要介紹了Yii2——使用數(shù)據(jù)庫操作匯總,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-12-12PHP操作MongoDB實(shí)現(xiàn)增刪改查功能【附php7操作MongoDB方法】
這篇文章主要介紹了PHP操作MongoDB實(shí)現(xiàn)增刪改查功能,結(jié)合實(shí)例形式總結(jié)分析了php操作MongoDB的常用技巧,并附帶php7操作MongoDB方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2018-04-04