日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

php排序算法有哪些,PHP常见的几种排序算法

發(fā)布時間:2023/12/19 php 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php排序算法有哪些,PHP常见的几种排序算法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、冒泡排序

排序原理:對一組數(shù)據(jù),比較相鄰數(shù)據(jù)的大小,把小的數(shù)據(jù)放在前面,值大的放在后面(升序排序)

舉例說明: $arr = [6, 3, 8, 2, 9, 1];

第一輪排序:

第一次比較 6和3比較:?3? ? 6? ?8? ?2? ?9? ?1

第二次比較 6和8比較:?3? ?6? ?8? ?2? ?9? ?1

第三次比較 8和2比較:?3? ? 6???2 ?89? ?1

第四次比較 8和9比較:?3? ? 6???2???8? ?9 ?1

第五次比較 9和1比較:?3? ? 6? ?2? ?8? ?1? ?9

第一輪比較總結(jié):1.排序第1輪、比較5次,沒有獲得從小到大的排序 ? 2.因?yàn)槊看伪容^都是大數(shù)往后靠,所以比較完成后,可以確定大數(shù)排在最后(9 已經(jīng)冒泡冒出來了,下輪比較可以不用比較了?)

第二輪排序:

第一次比較 3和6比較:?3? ? 6? ?8? ?2? ?1? ?9

第二次比較 6和8比較:?3? ? 6? ?8? ?2? ?1? ?9

第三次比較 8和2比較:?3? ? 6???2? ?8? ?1? ?9

第四次比較 8和1比較:?3? ? 6???2???1? ?8? ?9

第二輪比較總結(jié):1.排序第2輪、比較4次,沒有獲得從小到大的排序 ? 2.冒泡出了 8,下輪不用比較8 了

第三輪排序:

第一次比較 3和6比較:?3? ? 6? ?2? ?1? ?8? ?9

第二次比較 6和2比較:?3? ? 2? ?6? ?1? ?8? ?9

第三次比較 6和1比較:?3? ? 2??1? ?6? ?8? ? 9

第三輪比較總結(jié):1.排序第3輪、比較3次,沒有獲得從小到大的排序 ? 2.冒泡出了 6,下輪不用比較6 了

第四輪排序:

第一次比較 3和2比較:?2? ? 3???1? ?6? ?8? ? 9

第二次比較 3和1比較:?2? ? 1? ?3? ?6? ?8? ?9

第四輪比較總結(jié):1.排序第4輪、比較2次,沒有獲得從小到大的排序 ? 2.冒泡出了 3,下輪不用比較3 了

第五輪比較

第一次比較2和1比較:?1? ? 2??3? ?6? ?8? ? 9

第五輪比較總結(jié):1.排序第5輪、比較1次,沒有獲得從小到大的排序 ? 2.冒泡出了 2,由于還剩一個1,不用再比較了,至此通過5輪排序,完成整個排序

結(jié)論:對于一個長度為N的數(shù)組,我們需要排序 N-1 輪,每 i 輪 要比較 N-i 次。對此我們可以用雙重循環(huán)語句,外層循環(huán)控制循環(huán)輪次,內(nèi)層循環(huán)控制每輪的比較次數(shù)。

代碼實(shí)現(xiàn):

二、選擇排序

原理:在一組數(shù)據(jù)中,選出最小數(shù)與第一個位置的數(shù)交換。讓胡在剩些的數(shù)再找最小的數(shù)與第二個位置的數(shù)交換,如此類推。

舉例說明: $arr = [6, 3, 8, 2, 9, 1];

第一輪:

第一次比較: 第一個數(shù)6與3? 8? 2? 9? 1中的3比較,最小數(shù)為3,位置為1

第二次比較: 第最小數(shù)3與3??8? 2? 9? 1中的8比較,最小數(shù)為3,位置為1

第三次比較: 第最小數(shù)3與3??8??2? 9? 1中的2比較,最小數(shù)為2,位置為3

第四次比較: 第最小數(shù)2與3??8? 2??9? 1中的9比較,最小數(shù)為2,位置為3

第五次比較: 第最小數(shù)2與3??8? 2? 9??1中的1比較,最小數(shù)為1,位置為5

第一輪比較完成后,確定最小數(shù)為1,小于第一個數(shù)6,交換位置上的數(shù),交換后結(jié)果為?1 ?3 ?8 ?2 ?9 ?6

第二輪:

第一次比較: 第一個數(shù)3與??8? 2? 9? 6中的8比較,最小數(shù)為3,位置為1

第二次比較: 第最小數(shù)3與? 8??2? 9? 6中的2比較,最小數(shù)為2,位置為3

第三次比較: 第最小數(shù)2與? 8? 2??9? 6中的9比較,最小數(shù)為2,位置為3

第三次比較: 第最小數(shù)2與? 8? 2??9??6中的6比較,最小數(shù)為2,位置為3

第二輪比較完成后,確定最小數(shù)為2,小于第二個數(shù)3,交換位置上的數(shù),交換后結(jié)果為?1 ?2 ?8 ?3 ?9 ?6、、

第三輪:

第一次比較: 第一個數(shù)8與??3? 9? 6中的8比較,最小數(shù)為3,位置為3

第二次比較: 第最小數(shù)3與? 3??9? 6中的9比較,最小數(shù)為3,位置為3

第三次比較: 第最小數(shù)2與? 3??9??6中的6比較,最小數(shù)為3,位置為3

第三輪比較完成后,確定最小數(shù)為3,小于第三個數(shù)8,交換位置上的數(shù),交換后結(jié)果為?1 ?2 ?3 ?8 ?9 ?6

第四輪:

第一次比較: 第一個數(shù)8與??9? 6中的9比較,最小數(shù)為8,位置為3

第二次比較: 第最小數(shù)8與??9??6中的6比較,最小數(shù)為6,位置為5

第四輪比較完成后,確定最小數(shù)為6,小于第四個數(shù)8交換位置上的數(shù),交換后結(jié)果為?1 ?2 ?3 ?6 ?9 ?8

第五輪:

第一次比較: 第一個數(shù) 9與?8 中的8比較,最小數(shù)為8,位置為5

第五輪比較完成后,確定最小數(shù)為8,小于第五個數(shù)9,交換位置上的數(shù),交換后結(jié)果為?1 ?2 ?3 ?6 ?8 ?9

綜合以上五輪比較,每一輪比較都可以確定一個位置,對于N個數(shù),比較N-1輪可以確定N個位置上的數(shù),因?yàn)榇_定了N-1個位置,最后一個位置也就確定了

代碼實(shí)現(xiàn):

三、插入排序

在要排序的一組數(shù)中,假設(shè)前面的數(shù)已經(jīng)是排好順序的,現(xiàn)在要把第n個數(shù)插到前面的有序數(shù)中,使得這n個數(shù)也是排好順序的。如此反復(fù)循環(huán),直到全部排好順序

代碼實(shí)現(xiàn):

四、快速排序

從數(shù)組第一個元素開始依次確定從小到大的元素

代碼實(shí)現(xiàn):

總結(jié)

以上是生活随笔為你收集整理的php排序算法有哪些,PHP常见的几种排序算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。