电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

PHP四種基本排序算法示例

瀏覽:4日期:2022-09-13 08:35:47

許多人都說算法是程序的核心,算法的好壞決定了程序的質量。作為一個初學者,雖然很少接觸到算法方面的東西。但是對于基本的排序算法還是應該掌握的,它是程序開發的必備工具。

1. 冒泡排序

思路分析:在要排序的一組數中,對當前還未排好的序列,從前往后對相鄰的兩個數依次進行比較和調整,讓較大的數往下沉,較小的往上冒。即,每當兩相鄰的數比較后發現它們的排序與排序要求相反時,就將它們互換。

代碼實現:

$arr=array(1,43,54,62,21,66,32,78,36,76,39);function bubbleSort($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;}

2. 選擇排序

思路分析:在要排序的一組數中,選出最小的一個數與第一個位置的數交換。然后在剩下的數當中再找最小的與第二個位置的數交換,如此循環到倒數第二個數和最后一個數比較為止。

代碼實現:

function selectSort($arr) {//雙重循環完成,外層控制輪數,內層控制比較次數$len=count($arr);for($i=0; $i<$len-1; $i++) {//先假設最小的值的位置$p = $i;for($j=$i+1; $j<$len; $j++) {//$arr[$p] 是當前已知的最小值if($arr[$p] > $arr[$j]) {//比較,發現更小的,記錄下最小值的位置;并且在下次比較時采用已知的最小值進行比較。$p = $j;}}//已經確定了當前的最小值的位置,保存到$p中。如果發現最小值的位置與當前假設的位置$i不同,則位置互換即可。if($p != $i) {$tmp = $arr[$p];$arr[$p] = $arr[$i];$arr[$i] = $tmp;}}//返回最終結果return $arr;}

3.插入排序

思路分析:在要排序的一組數中,假設前面的數已經是排好順序的,現在要把第n個數插到前面的有序數中,使得這n個數也是排好順序的。如此反復循環,直到全部排好順序。

代碼實現:

function insertSort($arr) {$len=count($arr);for($i=1, $i<$len; $i++) {$tmp = $arr[$i];//內層循環控制,比較并插入for($j=$i-1;$j>=0;$j--) {if($tmp < $arr[$j]) {//發現插入的元素要小,交換位置,將后邊的元素與前面的元素互換$arr[$j+1] = $arr[$j];$arr[$j] = $tmp;} else {//如果碰到不需要移動的元素,由于是已經排序好是數組,則前面的就不需要再次比較了。break;}}}return $arr;}

4.快速排序

思路分析:選擇一個基準元素,通常選擇第一個元素或者最后一個元素。通過一趟掃描,將待排序列分成兩部分,一部分比基準元素小,一部分大于等于基準元素。此時基準元素在其排好序后的正確位置,然后再用同樣的方法遞歸地排序劃分的兩部分。

代碼實現:

function quickSort($arr) {//先判斷是否需要繼續進行$length = count($arr);if($length <= 1) {return $arr;}//選擇第一個元素作為基準$base_num = $arr[0];//遍歷除了標尺外的所有元素,按照大小關系放入兩個數組內//初始化兩個數組$left_array = array(); //小于基準的$right_array = array(); //大于基準的for($i=1; $i<$length; $i++) {if($base_num > $arr[$i]) {//放入左邊數組$left_array[] = $arr[$i];} else {//放入右邊$right_array[] = $arr[$i];}}//再分別對左邊和右邊的數組進行相同的排序處理方式遞歸調用這個函數$left_array = quick_sort($left_array);$right_array = quick_sort($right_array);//合并return array_merge($left_array, array($base_num), $right_array);}

標簽: PHP
相關文章:
主站蜘蛛池模板: 网架支座@球铰支座@钢结构支座@成品支座厂家@万向滑动支座_桥兴工程橡胶有限公司 | 防伪溯源|防窜货|微信二维码营销|兆信_行业内领先的防伪防窜货数字化营销解决方案供应商 | 大功率金属激光焊接机价格_不锈钢汽车配件|光纤自动激光焊接机设备-东莞市正信激光科技有限公司 定制奶茶纸杯_定制豆浆杯_广东纸杯厂_[绿保佳]一家专业生产纸杯碗的厂家 | 蔬菜清洗机_环速洗菜机_异物去除清洗机_蔬菜清洗机_商用洗菜机 - 环速科技有限公司 | 代理记账_公司起名核名_公司注册_工商注册-睿婕实业有限公司 | 火锅加盟_四川成都火锅店加盟_中国火锅连锁品牌十强_朝天门火锅【官网】 | 塑料熔指仪-塑料熔融指数仪-熔体流动速率试验机-广东宏拓仪器科技有限公司 | 杭州中策电线|中策电缆|中策电线|杭州中策电缆|杭州中策电缆永通集团有限公司 | 千斤顶,液压千斤顶-力良企业,专业的液压千斤顶制造商,shliliang.com | 防爆大气采样器-防爆粉尘采样器-金属粉尘及其化合物采样器-首页|盐城银河科技有限公司 | 双齿辊破碎机-大型狼牙破碎机视频-对辊破碎机价格/型号图片-金联机械设备生产厂家 | 温控器生产厂家-提供温度开关/热保护器定制与批发-惠州市华恺威电子科技有限公司 | Honsberg流量计-Greisinger真空表-气压计-上海欧臻机电设备有限公司 | 安徽净化板_合肥岩棉板厂家_玻镁板厂家_安徽科艺美洁净科技有限公司 | 杜甫仪器官网|实验室平行反应器|升降水浴锅|台式低温循环泵 | 天一线缆邯郸有限公司_煤矿用电缆厂家_矿用光缆厂家_矿用控制电缆_矿用通信电缆-天一线缆邯郸有限公司 | 欧洲MV日韩MV国产_人妻无码一区二区三区免费_少妇被 到高潮喷出白浆av_精品少妇自慰到喷水AV网站 | SDI车窗夹力测试仪-KEMKRAFT方向盘测试仪-上海爱泽工业设备有限公司 | 贵州成人高考网_贵州成考网| 东莞精密模具加工,精密连接器模具零件,自動機零件,冶工具加工-益久精密 | 编织人生 - 权威手工编织网站,编织爱好者学习毛衣编织的门户网站,织毛衣就上编织人生网-编织人生 | 衬氟止回阀_衬氟闸阀_衬氟三通球阀_衬四氟阀门_衬氟阀门厂-浙江利尔多阀门有限公司 | 上海办公室装修公司_办公室设计_直营办公装修-羚志悦装 | 上海深蓝_缠绕机_缠膜机-上海深蓝机械装备有限公司 | 中视电广_短视频拍摄_短视频推广_短视频代运营_宣传片拍摄_影视广告制作_中视电广 | 肉嫩度仪-凝胶测试仪-国产质构仪-气味分析仪-上海保圣实业发展有限公司|总部 | 防勒索软件_数据防泄密_Trellix(原McAfee)核心代理商_Trellix(原Fireeye)售后-广州文智信息科技有限公司 | 沈阳网站建设_沈阳网站制作_沈阳网页设计-做网站就找示剑新零售 沈阳缠绕膜价格_沈阳拉伸膜厂家_沈阳缠绕膜厂家直销 | 武汉画册印刷厂家-企业画册印刷-画册设计印刷制作-宣传画册印刷公司 - 武汉泽雅印刷厂 | 禹城彩钢厂_钢结构板房_彩钢复合板-禹城泰瑞彩钢复合板加工厂 | 汽液过滤网厂家_安平县银锐丝网有限公司 | 数字展示在线_数字展示行业门户网站| 广州食堂承包_广州团餐配送_广州堂食餐饮服务公司 - 旺记餐饮 | 杭州高温泵_热水泵_高温油泵|昆山奥兰克泵业制造有限公司 | 电竞学校_电子竞技培训学校学院-梦竞未来电竞学校官网 | 流水线电子称-钰恒-上下限报警电子秤-上海宿衡实业有限公司 | 数控专用机床,专用机床,自动线,组合机床,动力头,自动化加工生产线,江苏海鑫机床有限公司 | 明渠式紫外线杀菌器-紫外线消毒器厂家-定州市优威环保 | 电气控制系统集成商-PLC控制柜变频控制柜-非标自动化定制-电气控制柜成套-NIDEC CT变频器-威肯自动化控制 | 搪玻璃冷凝器_厂家-越宏化工设备 | 山东成考网-山东成人高考网 |