欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

好程序員web前端培訓(xùn)分享JavaScript學(xué)習(xí)筆數(shù)組的排序-創(chuàng)新互聯(lián)

   好程序員web 前端培訓(xùn)分享 JavaScript 學(xué)習(xí)筆數(shù)組的排序 , 排序,就是把一個亂序的數(shù)組,通過我們的處理,讓他變成一個有序的數(shù)組 , 今天我們講解兩種方式來排序一個數(shù)組  冒泡排序   和   選擇排序

襄汾ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!

冒泡排序

·  先遍歷數(shù)組,讓挨著的兩個進(jìn)行比較,如果前一個比后一個大,那么就把兩個換個位置

·  數(shù)組遍歷一遍以后,那么最后一個數(shù)字就是大的那個了

·  然后進(jìn)行第二遍的遍歷,還是按照之前的規(guī)則,第二大的數(shù)字就會跑到倒數(shù)第二的位置

·  以此類推,最后就會按照順序把數(shù)組排好了

1、我們先來準(zhǔn)備一個亂序的數(shù)組

var   arr   =   [ 3 ,   1 ,   5 ,   6 ,   4 ,   9 ,   7 ,   2 ,   8 ]

·  接下來我們就會用代碼讓數(shù)組排序

2、先不著急循環(huán),先來看數(shù)組里面內(nèi)容換個位置

// 假定我現(xiàn)在要讓數(shù)組中的第 0 項和第 1 項換個位置// 需要借助第三個變量 var   tmp   =   arr[ 0 ]arr[ 0 ]   =   arr[ 1 ]arr[ 1 ]   =   tmp

3、第一次遍歷數(shù)組,把大的放到最后面去

for   ( var   i   =   0 ;   i   <   arr.length;   i ++ )   {

   // 判斷,如果數(shù)組中的當(dāng)前一個比后一個大,那么兩個交換一下位置    if   (arr[i]   >   arr[i   +   1 ])   {

     var   tmp   =   arr[i]

     arr[i]   =   arr[i   +   1 ]

     arr[i   +   1 ]   =   tmp

   }}

// 遍歷完畢以后,數(shù)組就會變成 [3, 1, 5, 6, 4, 7, 2, 8, 9]

·  第一次結(jié)束以后,數(shù)組中的最后一個,就會是大的那個數(shù)字

·  然后我們把上面的這段代碼執(zhí)行多次。數(shù)組有多少項就執(zhí)行多少次

4、按照數(shù)組的長度來遍歷多少次

for   ( var   j   =   0 ;   j   <   arr.length;   j ++ )   {

   for   ( var   i   =   0 ;   i   <   arr.length;   i ++ )   {

     // 判斷,如果數(shù)組中的當(dāng)前一個比后一個大,那么兩個交換一下位置      if   (arr[i]   >   arr[i   +   1 ])   {

       var   tmp   =   arr[i]

       arr[i]   =   arr[i   +   1 ]

       arr[i   +   1 ]   =   tmp

     }

   }}

// 結(jié)束以后,數(shù)組就排序好了

5、給一些優(yōu)化

·  想象一個問題,假設(shè)數(shù)組長度是 9,第八次排完以后

·  后面八個數(shù)字已經(jīng)按照順序排列好了,剩下的那個最小的一定是在最前面

·  那么第九次就已經(jīng)沒有意義了,因為最小的已經(jīng)在最前面了,不會再有任何換位置出現(xiàn)了

·  那么我們第九次遍歷就不需要了,所以我們可以減少一次

for   ( var   j   =   0 ;   j   <   arr.length   -   1 ;   j ++ )   {

   for   ( var   i   =   0 ;   i   <   arr.length;   i ++ )   {

     // 判斷,如果數(shù)組中的當(dāng)前一個比后一個大,那么兩個交換一下位置      if   (arr[i]   >   arr[i   +   1 ])   {

       var   tmp   =   arr[i]

       arr[i]   =   arr[i   +   1 ]

       arr[i   +   1 ]   =   tmp

     }

   }}

·  第二個問題,第一次的時候,已經(jīng)把大的數(shù)字放在最后面了

·  那么第二次的時候,其實倒數(shù)第二個和最后一個就不用比了

·  因為我們就是要把倒數(shù)第二大的放在倒數(shù)第二的位置,即使比較了,也不會換位置

·  第三次就要倒數(shù)第三個數(shù)字就不用再和后兩個比較了

·  以此類推,那么其實每次遍歷的時候,就遍歷當(dāng)前次數(shù) - 1 次

for   ( var   j   =   0 ;   j   <   arr.length   -   1 ;   j ++ )   {

   for   ( var   i   =   0 ;   i   <   arr.length   -   1   -   j;   i ++ )   {

     // 判斷,如果數(shù)組中的當(dāng)前一個比后一個大,那么兩個交換一下位置      if   (arr[i]   >   arr[i   +   1 ])   {

       var   tmp   =   arr[i]

       arr[i]   =   arr[i   +   1 ]

       arr[i   +   1 ]   =   tmp

     }

   }}

6、至此,一個冒泡排序就完成了

選擇排序

·  先假定數(shù)組中的第 0 個就是最小的數(shù)字的索引

·  然后遍歷數(shù)組,只要有一個數(shù)字比我小,那么就替換之前記錄的索引

·  知道數(shù)組遍歷結(jié)束后,就能找到最小的那個索引,然后讓最小的索引換到第 0 個的位置

·  再來第二趟遍歷,假定第 1 個是最小的數(shù)字的索引

·  在遍歷一次數(shù)組,找到比我小的那個數(shù)字的索引

·  遍歷結(jié)束后換個位置

·  依次類推,也可以把數(shù)組排序好

1、準(zhǔn)備一個數(shù)組 var arr = [3, 1, 5, 6, 4, 9, 7, 2, 8]

2、假定數(shù)組中的第 0 個是最小數(shù)字的索引 var minIndex = 0

3、遍歷數(shù)組,判斷,只要數(shù)字比我小,那么就替換掉原先記錄的索引

var   minIndex   =   0 for   ( var   i   =   0 ;   i   <   arr.length;   i ++ )   {

   if   (arr[i]   <   arr[minIndex])   {

     minIndex   =   i

   }}

// 遍歷結(jié)束后找到最小的索引// 讓第 minIndex 個和第 0 個交換 var   tmp   =   arr[minIndex]arr[minIndex]   =   arr[ 0 ]arr[ 0 ]   =   tmp

4、按照數(shù)組的長度重復(fù)執(zhí)行上面的代碼

for   ( var   j   =   0 ;   j   <   arr.length;   j ++ )   {

   // 因為第一遍的時候假定第 0 個,第二遍的時候假定第 1 個    // 所以我們要假定第 j 個就行    var   minIndex   =   j

  

   // 因為之前已經(jīng)把最小的放在最前面了,后面的循環(huán)就不需要判斷前面的了    // 直接從 j + 1 開始    for   ( var   i   =   j   +   1 ;   i   <   arr.length;   i ++ )   {

     if   (arr[i]   <   arr[minIndex])   {

       minIndex   =   i

     }

   }

   // 遍歷結(jié)束后找到最小的索引    // 第一堂的時候是和第 0 個交換,第二趟的時候是和第 1 個交換    // 我們直接和第 j 個交換就行    var   tmp   =   arr[minIndex]

   arr[minIndex]   =   arr[j]

   arr[j]   =   tmp}

5、一些優(yōu)化

·  和之前一樣,倒數(shù)第二次排序完畢以后,就已經(jīng)排好了,最后一次沒有必要了

for   ( var   j   =   0 ;   j   <   arr.length   -   1 ;   j ++ )   {

   var   minIndex   =   j

  

   for   ( var   i   =   j   +   1 ;   i   <   arr.length;   i ++ )   {

     if   (arr[i]   <   arr[minIndex])   {

       minIndex   =   i

     }

   }

   var   tmp   =   arr[minIndex]

   arr[minIndex]   =   arr[j]

   arr[j]   =   tmp}

·  在交換變量之前,可以判斷一下,如果我們遍歷后得到的索引和當(dāng)前的索引一直

·  那么就證明當(dāng)前這個就是目前最小的,那么就沒有必要交換

·  做一我們要判斷,最小作引和當(dāng)前作引不一樣的時候,才交換

for   ( var   j   =   0 ;   j   <   arr.length   -   1 ;   j ++ )   {

   var   minIndex   =   j

  

   for   ( var   i   =   j   +   1 ;   i   <   arr.length;   i ++ )   {

     if   (arr[i]   <   arr[minIndex])   {

       minIndex   =   i

     }

   }

   if   (minIndex   !==   j)   {

     var   tmp   =   arr[minIndex]

     arr[minIndex]   =   arr[j]

     arr[j]   =   tmp    

   }}

6、至此,選擇排序完成

當(dāng)前文章:好程序員web前端培訓(xùn)分享JavaScript學(xué)習(xí)筆數(shù)組的排序-創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://aaarwkj.com/article32/dohjpc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、動態(tài)網(wǎng)站、網(wǎng)站收錄、域名注冊網(wǎng)站制作、營銷型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)
亚洲熟妇人妻一区二区三区| 亚洲精品一区二区三区pp| 日韩高清在线亚洲专区不卡| 亚洲国内精品一区二区在线| 精品国产一区亚洲二区| 国产老熟女一区二区三区| 日本精品一级免费在线| 青青草成人免费在线公开视频| 久久精品亚洲欧美麻豆| 欧美日韩国内在线视频| 日本欧美高清一区二区| 中文字幕人妻熟女在线| 国产伦一区二区三区三州| av丰满人妻一区二区| 亚洲欧美日韩另类精品一区二区三区 | 亚洲精品在线观看第一页| 国产精品97久久97久久久久| 亚洲一二三区精品与老人| 男人天堂插插综合搜索| 亚洲av日韩精品一区二区| 男女视频一区二区三区在线观看 | 正在播放老肥熟妇露脸| 91在线国产手机视频| 欧美日韩在线不卡成人| 日本在线一区二区三区免费视频| 精品国产成人一区二区| 欧洲一区二区三区黄色| 日韩中文字幕在线首页| 色哟哟视频免费在线观看| 黄色亚洲大片免费在线观看| 免费草b视频在线观看| 国产精品国产三级国产专区 | 溪乱毛片一区二区三区| 日本道欧美一区二区aaaa| 毛片一区二区三区免费看| 日本不卡一区二区在线播放| 欧美日韩中文字幕精品| 丰满人妻二区三区性色| 女同三人按摩高潮喷出| 在线精品91国产在线观看| 欧美日在线观看加勒比|