校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識(shí)庫 > PHP四種排序算法實(shí)現(xiàn)及效率分析【冒泡排序,插入排序,選擇排序和快速排序】

PHP四種排序算法實(shí)現(xiàn)及效率分析【冒泡排序,插入排序,選擇排序和快速排序】

熱門標(biāo)簽:四川保險(xiǎn)智能外呼系統(tǒng)供應(yīng)商 寧波外呼營銷系統(tǒng) 長沙做地圖標(biāo)注公司 上海做外呼線路的通信公司 電話機(jī)器人銷售主要負(fù)責(zé)什么 房產(chǎn)中介用的是什么外呼系統(tǒng) 遼寧ai電銷機(jī)器人價(jià)格 地圖標(biāo)注專員怎么樣 福建銀行智能外呼系統(tǒng)價(jià)格

本文實(shí)例講述了PHP四種排序算法實(shí)現(xiàn)及效率分析。分享給大家供大家參考,具體如下:

PHP的四種基本排序算法為:冒泡排序、插入排序、選擇排序和快速排序。

下面是我整理出來的算法代碼:

1. 冒泡排序:

思路:對(duì)數(shù)組進(jìn)行多輪冒泡,每一輪對(duì)數(shù)組中的元素兩兩比較,調(diào)整位置,冒出一個(gè)最大的數(shù)來。

//簡單版:
function bubbleSort($arr)
{
   $n = count($arr);
   for($i=1;$i$n;$i++) { //冒泡的輪數(shù)(最多$n-1輪)
     for($j=0;$j$n-1;$j++) { //每一輪冒泡(兩兩比較,大者后移)
       if($arr[$j] > $arr[$j+1]) { //前者大于后者,交換位置
          $tmp = $arr[$j];
          $arr[$j] = $arr[$j+1];
          $arr[$j+1] = $tmp;
       }
     }
   }
   return $arr;
}

//改進(jìn)版:
function bubbleSort($arr)
{
   $n = count($arr);
   for($i=1;$i$n;$i++) { //冒泡的輪數(shù)(最多$n-1輪)
     $flag = 0;  //是否發(fā)生位置交換的標(biāo)志
     for($j=0;$j$n-$i;$j++) { //每一輪冒泡(兩兩比較,大者后移)
       if($arr[$j] > $arr[$j+1]) { //前者大于后者,交換位置
          $tmp = $arr[$j];
          $arr[$j] = $arr[$j+1];
          $arr[$j+1] = $tmp;
          $flag = 1;
       }
     }
     if($flag == 0) {  //沒有發(fā)生位置交換,排序已完成
       break;
     }
   }
   return $arr;
}

為了提高冒泡排序算法的效率,主要需要改進(jìn)的地方有:

(1)減少冒泡的輪數(shù):當(dāng)一輪冒泡排序中沒有發(fā)生位置交換時(shí)表示數(shù)組已排好序了,應(yīng)立即退出循環(huán)。

(2)減少每一輪比較的次數(shù):對(duì)數(shù)組中已經(jīng)排好序的部分元素不再對(duì)它們進(jìn)行比較。

2. 插入排序:

思路:假設(shè)數(shù)組前面的元素是排好序的,遍歷數(shù)組后面的元素,在已排好序的元素隊(duì)列中找到合適的位置,插入其中。

function insertSort($arr)
{
   $n = count($arr);
   for($i=1;$i$n;$i++) { //從第二個(gè)元素開始插入
     for($j=$i-1;$j>=0;$j--) { //與前面的數(shù)比較,找到插入的位置
       if($arr[$j] > $arr[$j+1]) { //比前面的數(shù)小,交換位置
          $tmp = $arr[$j];
          $arr[$j] = $arr[$j+1];
          $arr[$j+1] = $tmp;
       } else { //大于或等于前面的數(shù),表示已找到插入的位置
          break;
       }
     }
   }
   return $arr;
}

3. 選擇排序:

思路:進(jìn)行多次選擇,每次選出最大元素放入指定位置。

function selectSort($arr)
{
   $n = count($arr);
   for($i=$n-1;$i>0;$i--) { //選擇排序的輪數(shù)($n-1輪)
     $pos = $i; //假設(shè)最大元素的位置
     for($j=0;$j$i;$j++) { //每一輪:從未選擇過的元素中選擇最大的數(shù)
       if($arr[$j] > $arr[$pos]) { //所在位置元素比目前最大元素大,標(biāo)志其位置
          $pos = $j;
       }
     }
     if($pos != $i) { //將最大元素放入指定的位置
       $tmp = $arr[$pos];
       $arr[$pos] = $arr[$i];
       $arr[$i] = $tmp;
     }
   }
   return $arr;
}

4. 快速排序:

思路:遞歸算法。先選擇數(shù)組的第一個(gè)元素作為標(biāo)準(zhǔn),然后把小于或等于它和大于它的數(shù)分別放入兩個(gè)數(shù)組中,對(duì)這兩個(gè)數(shù)組也進(jìn)行相同的處理,最后合并這兩個(gè)數(shù)組和第一個(gè)元素。

function quickSort($arr)
{
   $n = count($arr);
   if($n = 1) { //若數(shù)組只有一個(gè)元素,直接返回
     return $arr;
   }
   $largeArr = array(); //存放大數(shù)
  $smallArr = array(); //存放小數(shù)
   $cur = $arr[0];  //分類基數(shù)
   for($i=1;$i$n;$i++) { //遍歷數(shù)組元素,對(duì)每個(gè)元素進(jìn)行歸類
     if($arr[$i] > $cur) {
       $largeArr[] = $arr[$i];
     } else {
       $smallArr[] = $arr[$i];
     }
   }
   //分別對(duì)大數(shù)組和小數(shù)組進(jìn)行相同的處理
   $smallArr = quickSort($smallArr);
   $largeArr = quickSort($largeArr);
   //合并小數(shù)組、分類基數(shù)和大數(shù)組
   return array_merge($smallArr,array($cur),$largeArr);
}

各個(gè)排序算法的時(shí)間復(fù)雜度和空間復(fù)雜度:

排序算法 最好時(shí)間分析 最差時(shí)間分析 平均時(shí)間復(fù)雜度 穩(wěn)定度 空間復(fù)雜度
冒泡排序 O(n) O(n2) O(n2) 穩(wěn)定 O(1)
插入排序 O(n) O(n2) O(n2) 穩(wěn)定 O(1)
選擇排序 O(n2) O(n2) O(n2) 穩(wěn)定 O(1)
快速排序 O(nlog2n) O(n2) O(nlog2n) 不穩(wěn)定 O(log2n)~O(n)

注:快速排序在數(shù)組亂序是效率是最好的,在數(shù)組有序時(shí)效率是最差的。

PS:這里再為大家推薦一款關(guān)于排序的演示工具供大家參考:

在線動(dòng)畫演示插入/選擇/冒泡/歸并/希爾/快速排序算法過程工具:
http://tools.jb51.net/aideddesign/paixu_ys

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php排序算法總結(jié)》、《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計(jì)算法總結(jié)》、《php字符串(string)用法總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《PHP常用遍歷算法與技巧總結(jié)》及《PHP數(shù)學(xué)運(yùn)算技巧總結(jié)》

希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。

您可能感興趣的文章:
  • PHP快速排序算法實(shí)例分析
  • PHP排序算法之快速排序(Quick Sort)及其優(yōu)化算法詳解
  • PHP遞歸實(shí)現(xiàn)快速排序的方法示例
  • php 二維數(shù)組快速排序算法的實(shí)現(xiàn)代碼
  • PHP常用排序算法實(shí)例小結(jié)【基本排序,冒泡排序,快速排序,插入排序】
  • PHP快速排序quicksort實(shí)例詳解
  • PHP快速排序算法實(shí)現(xiàn)的原理及代碼詳解

標(biāo)簽:工商登記 宜春 宿遷 深圳 佛山 延安 澳門 常德

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP四種排序算法實(shí)現(xiàn)及效率分析【冒泡排序,插入排序,選擇排序和快速排序】》,本文關(guān)鍵詞  PHP,四種,排序,算法,實(shí)現(xiàn),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP四種排序算法實(shí)現(xiàn)及效率分析【冒泡排序,插入排序,選擇排序和快速排序】》相關(guān)的同類信息!
  • 本頁收集關(guān)于PHP四種排序算法實(shí)現(xiàn)及效率分析【冒泡排序,插入排序,選擇排序和快速排序】的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    国产v综合v亚洲欧| 丝袜亚洲另类丝袜在线| hitomi一区二区三区精品| 中国色在线观看另类| 成人永久看片免费视频天堂| 国产精品传媒视频| 色94色欧美sute亚洲线路一ni| 一区二区三区精品视频| av在线一区二区三区| 青娱乐精品视频| 亚洲美女在线一区| 国产视频一区在线观看| 3d成人动漫网站| 色婷婷综合久久久久中文一区二区| 蜜臀av性久久久久av蜜臀妖精| 1024成人网色www| 精品日韩成人av| 日本丶国产丶欧美色综合| 国产精品一区二区在线播放 | 9i在线看片成人免费| 亚洲主播在线播放| 中文字幕免费不卡在线| 久久66热偷产精品| 日韩经典中文字幕一区| 日韩高清不卡一区二区三区| 亚洲午夜影视影院在线观看| 亚洲激情在线播放| 一区二区三区美女视频| 国产精品天干天干在线综合| 亚洲男人天堂av网| 日韩一区二区三区免费看| 91麻豆高清视频| 国产91精品露脸国语对白| 亚洲成人av一区二区| 亚洲一区国产视频| 洋洋av久久久久久久一区| 日韩成人午夜精品| 欧美午夜视频网站| 一本久道久久综合中文字幕 | xf在线a精品一区二区视频网站| 成人永久免费视频| 五月天视频一区| 欧美激情一区二区三区在线| 欧美日韩国产高清一区| 国产a精品视频| 国产精品久久久久久久久免费樱桃 | 美洲天堂一区二卡三卡四卡视频| 国产精品一区二区免费不卡| 九九视频精品免费| 欧美日韩久久久久久| 国产精品国产三级国产普通话99| 国产在线不卡视频| 欧美大片一区二区| 色婷婷国产精品久久包臀| 日本伦理一区二区| 国产精品麻豆久久久| 国产乱码精品一区二区三区av| 欧美理论在线播放| 亚洲国产精品视频| 色婷婷精品大视频在线蜜桃视频| 国产免费观看久久| 国产一区二区三区四| 精品福利在线导航| 久久激情五月激情| 欧美成人aa大片| 激情综合色播五月| 2017欧美狠狠色| 国产精品羞羞答答xxdd| 久久精品一区二区| 国产精品亚洲一区二区三区妖精| 2023国产精品| 国产精品综合一区二区三区| 欧美在线观看一区二区| 久久久91精品国产一区二区三区| 美女国产一区二区三区| 99视频国产精品| 欧美电视剧免费观看| 久久精品免费观看| 色综合久久久久综合体桃花网| 欧美激情一区二区三区全黄| 欧美一区二区视频观看视频 | 99久久精品免费观看| 激情六月婷婷久久| 日韩精品亚洲一区| 夜夜精品视频一区二区| 国产精品三级电影| 久久精品欧美日韩| 精品国产乱码久久久久久牛牛| 欧美人妖巨大在线| 91福利国产成人精品照片| 国产suv一区二区三区88区| 国产一区二区三区国产| 精品一区二区精品| 美女网站在线免费欧美精品| 首页欧美精品中文字幕| 一区二区三区高清| 久久久综合网站| 精品少妇一区二区三区日产乱码| 欧美日韩性生活| 欧美无人高清视频在线观看| 91日韩精品一区| 色综合欧美在线视频区| 97精品视频在线观看自产线路二| 成人av在线影院| 成人av资源下载| 不卡视频一二三| 91蜜桃传媒精品久久久一区二区 | 国产成人免费视频| 国产精品亚洲专一区二区三区| 国产综合色精品一区二区三区| 蜜桃视频第一区免费观看| 日韩激情av在线| 亚洲国产精品一区二区久久恐怖片| 亚洲一区日韩精品中文字幕| 综合av第一页| 国产精品动漫网站| 国产精品色一区二区三区| 制服丝袜亚洲精品中文字幕| 91精品国产91热久久久做人人| 欧美日韩国产在线观看| 色婷婷亚洲精品| 欧洲av一区二区嗯嗯嗯啊| 欧美亚洲国产一区在线观看网站| 在线免费观看日本欧美| 欧洲一区在线电影| 一本到一区二区三区| 欧美日韩一区久久| 欧美日韩高清一区| 91精品婷婷国产综合久久性色| 色老综合老女人久久久| 成人精品小蝌蚪| av一区二区久久| 91玉足脚交白嫩脚丫在线播放| 91亚洲国产成人精品一区二三| 99精品欧美一区二区蜜桃免费| 91免费看视频| 欧美少妇bbb| 在线成人小视频| 日韩一区二区电影在线| 精品日本一线二线三线不卡 | 91精品一区二区三区久久久久久| 欧美一区二区久久| 日韩欧美的一区| 欧美一区二区视频在线观看2020| 精品国产凹凸成av人导航| 国产亚洲精品7777| 国产精品欧美综合在线| 中文字幕精品—区二区四季| 亚洲黄一区二区三区| 亚洲6080在线| 久久国产剧场电影| 国产成人免费在线观看| 91久久免费观看| 制服丝袜激情欧洲亚洲| 久久综合九色欧美综合狠狠| 日本一区二区久久| 中文字幕一区av| 天天色综合成人网| 国产一区不卡在线| 成人精品高清在线| 欧美日韩一区二区三区四区| 亚洲成在线观看| 亚洲男人电影天堂| 日韩成人午夜精品| 国产成人自拍网| 欧美日韩精品一区二区三区蜜桃| 欧美一区二区三区视频在线观看 | 亚洲国产精品久久不卡毛片| 日本不卡一区二区| 国产成人在线观看| 在线这里只有精品| 制服丝袜av成人在线看| 中文一区在线播放| 亚洲成人一区在线| 久久99精品久久只有精品| fc2成人免费人成在线观看播放| 69久久夜色精品国产69蝌蚪网| 久久精品综合网| 一区二区三区不卡视频 | 国产激情视频一区二区三区欧美| 99这里只有精品| 日韩一区二区三区在线视频| 国产精品视频九色porn| 免费在线成人网| 99久久婷婷国产| 日韩一级黄色大片| 久久看人人爽人人| 日本视频一区二区| 成人av网站在线观看| 欧美一区二区精品| 国产精品每日更新在线播放网址| 青青国产91久久久久久| 成人99免费视频| 欧美一级高清片| 国产精品免费观看视频| 久久91精品国产91久久小草| 一本色道久久综合亚洲精品按摩| 精品国产青草久久久久福利| 亚洲欧美日韩在线| 粉嫩在线一区二区三区视频|