真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

PHP中插入排序算法的應(yīng)用-創(chuàng)新互聯(lián)

今天小編給大家分享的是PHP中插入排序算法的應(yīng)用,相信大部分人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,話不多說,一起往下看吧。

成都創(chuàng)新互聯(lián)主要從事網(wǎng)站制作、做網(wǎng)站、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)蘭陵,十載網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575

● 插入排序的思想:

將一個(gè)待排序的無序的數(shù)組看作是兩個(gè)列表,一個(gè)有序的列表,一個(gè)無序的列表,從無序的列表每次拿出一個(gè)待插入的元素,插入到有序的列表中,直到無序列表為空,排序完畢

● 實(shí)際舉例:

1. 有一個(gè)無序的一維數(shù)組是這次需要排序的數(shù)組,數(shù)組是:[36,12,96,-1]

2. 首先把數(shù)組的第一個(gè)元素 [36] 看作是一個(gè)獨(dú)立的有序的列表,把剩下的元素 [12, 96, -1] 看作是一個(gè)無序的列表

3. 第一個(gè)待插入的元素就是 12,要把 12 插入到有序的列表中,首先需要 12 和 36 比較,如果帶插入的元素 12 小于 36, 就需要把 12 插入到 36前面,也就是 36 要后移一位。

4. 插入排序?qū)嶋H是需要比較數(shù)組元素的總數(shù)減一輪,因?yàn)榈谝粋€(gè)元素不需要比較。

$arr = [36,12,96,-1];
//待插入的數(shù)
$insertValue = $arr[1];
//待插入數(shù)前面的數(shù)的索引
$insertIndek = 1 - 1;
//$insertIndek >= 0 保證插入循環(huán)時(shí),不越界,保證第一個(gè)元素的下標(biāo)要大于等0
//$insertValue < $arr[$insertIndek] 保證待插入的數(shù)還沒有找到插入的位置,即待插入的數(shù)是小于它前面的那一個(gè)元素的
//符合上述條件的,需要將$arr[$insertIndek] 后移
while($insertIndek >= 0 && $insertValue < $arr[$insertIndek]) {
 $arr[$insertIndek+1] = $arr[$insertIndek]; $insertIndek--;
 //代表的就是有序列表的最前面一個(gè)元素的前面一個(gè)下標(biāo) -1;
}
//當(dāng)退出循環(huán)時(shí),代表找到位置 $insertIndek + 1
$arr[$insertIndek + 1] = $insertValue;
//把插入的元素插入到有序列表的第一個(gè)位置或者是沒發(fā)生交換就在本身的位置
$arr = [12,36,96,-1];
//待插入的數(shù)
$insertValue = $arr[2];
//待插入數(shù)前面的數(shù)的索引
$insertIndek = 2 - 1;
//$insertIndek >= 0 保證插入循環(huán)時(shí),不越界,保證第一個(gè)元素的下標(biāo)要大于等0
//$insertValue < $arr[$insertIndek] 保證待插入的數(shù)還沒有找到插入的位置,即待插入的數(shù)是小于它前面的那一個(gè)元素的
//符合上述條件的,需要將$arr[$insertIndek] 后移
while($insertIndek >= 0 && $insertValue < $arr[$insertIndek]) {
 $arr[$insertIndek+1] = $arr[$insertIndek];
 $insertIndek--;
 //代表的就是有序列表的最前面一個(gè)元素的前面一個(gè)下標(biāo) -1;
}
//當(dāng)退出循環(huán)時(shí),代表找到位置 $insertIndek + 1
$arr[$insertIndek + 1] = $insertValue;//把插入的元素插入到有序列表的第一個(gè)位置或者是沒發(fā)生交換就在本身的位置

依次類推,得到完成的有序數(shù)組

5. 完整代碼如下:

 '待排序的序列非數(shù)組'];
 }
 $count = count($data);
 if ($count <= 1) {
 return $data;
 }
 for ($i = 1; $i < $count; $i++) {
 //待插入的元素
 $insertValue = $data[$i];
 //待插入數(shù)前面的數(shù)的索引
 $insertIndek = $i - 1;
 //$insertIndek >= 0 保證插入循環(huán)時(shí),不越界,保證第一個(gè)元素的下標(biāo)要大于等0\
 //$insertValue < $arr[$insertIndek] 保證待插入的數(shù)還沒有找到插入的位置,即待插入的數(shù)是小于它前面的那一個(gè)元素的
 //符合上述條件的,需要將$arr[$insertIndek] 后移
 while($insertIndek >= 0 && $insertValue < $data[$insertIndek]) {
 $data[$insertIndek+1] = $data[$insertIndek];
 $insertIndek--;//代表的就是有序列表的最前面一個(gè)元素的前面一個(gè)下標(biāo) -1;
 }
 //當(dāng)退出循環(huán)時(shí),代表找到位置 $insertIndek + 1
 //把插入的元素插入到有序列表的第一個(gè)位置
 //或者是沒發(fā)生交換,即待插入元素大于有序列表的最后一個(gè)元素,那么這里只需要將有序列表的最后一個(gè)元素的索引 + 1,把待插入元素放在后
 //面一位即可
 $data[$insertIndek + 1] = $insertValue;\ }
 return $data;
 }
 }
$arr = [36,12,96,-1];
var_dump(InsertSort::insertArraySort($arr));

關(guān)于PHP中插入排序算法的應(yīng)用就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。


標(biāo)題名稱:PHP中插入排序算法的應(yīng)用-創(chuàng)新互聯(lián)
文章源于:http://weahome.cn/article/cododg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部