成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

javascript冒泡排序

wanghui / 2154人閱讀

摘要:冒泡排序可謂是最經(jīng)典的排序算法了,它是基于比較的排序算法,其優(yōu)點(diǎn)是實(shí)現(xiàn)簡單,排序數(shù)量較小時(shí)性能較好。也可以實(shí)現(xiàn)大數(shù)放在前面,小數(shù)放在后面,如果前面的數(shù)據(jù)比后面的小,就交換兩個(gè)的位置。要實(shí)現(xiàn)上述規(guī)則需要用到兩層循環(huán)。

冒泡排序可謂是最經(jīng)典的排序算法了,它是基于比較的排序算法,其優(yōu)點(diǎn)是實(shí)現(xiàn)簡單,排序數(shù)量較小時(shí)性能較好。

算法原理

相鄰的數(shù)據(jù)進(jìn)行兩兩比較,小數(shù)放在前面,大數(shù)放在后面,如果前面的數(shù)據(jù)比后面的數(shù)據(jù)大,就交換這兩個(gè)數(shù)的位置。也可以實(shí)現(xiàn)大數(shù)放在前面,小數(shù)放在后面,如果前面的數(shù)據(jù)比后面的小,就交換兩個(gè)的位置。要實(shí)現(xiàn)上述規(guī)則需要用到兩層for循環(huán)。

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

冒泡實(shí)現(xiàn)數(shù)組從小到大排序

var arr=[2,7,1,8,6,4,3,5,9];
function mintomax(par){
  var length=par.length;
  for(var i=0; ipar[j+1]){
        var temp=par[j+1];
        par[j+1]=par[j];
        par[j]=temp;
      }
    }
  }
  return par;
}
console.log(mintomax(arr));

冒泡實(shí)現(xiàn)數(shù)組從大到小排序

var arr=[2,7,1,8,6,4,3,5,9];
function maxtomin(par){
      var length=par.length;
      for(var i=0; i

用es6結(jié)構(gòu)賦值的方式重寫上面代碼

var arr=[2,7,1,8,6,4,3,5,9];
function mintomax(par){
  var length=par.length;
  for(var i=0; ipar[j+1]){
        [par[j],par[j+1]]=[par[j+1],par[j]]
      }
    }
  }
  return par;
}
console.log(mintomax(arr));
function maxtomin(par){
  var length=par.length;
  for(var i=0; i

按照父子平鋪順序排序

var data = [{
  ZDXM_STDCODE: "100101",
  ZDXM_STDNAME: "",
  FINA_YYSR: "",
  FINA_PGZHSY: "",
  FINA_SJZHSY: "",
  FINA_PGZHSYL: "",
  FINA_SJZHSYL: "",
  FINA_ZHSYLCE: "",
  FINA_SRJJL: "",
  FINA_JSSKL: "",
  FINA_HTE: "",
  GLZDXM: "1001",
},
{
  ZDXM_STDCODE: "1001",
  ZDXM_STDNAME: "",
  FINA_YYSR: "",
  FINA_PGZHSY: "",
  FINA_SJZHSY: "",
  FINA_PGZHSYL: "",
  FINA_SJZHSYL: "",
  FINA_ZHSYLCE: "",
  FINA_SRJJL: "",
  FINA_JSSKL: "",
  FINA_HTE: "",
  GLZDXM: "",
},
{
  ZDXM_STDCODE: "100102",
  ZDXM_STDNAME: "",
  FINA_YYSR: "",
  FINA_PGZHSY: "",
  FINA_SJZHSY: "",
  FINA_PGZHSYL: "",
  FINA_SJZHSYL: "",
  FINA_ZHSYLCE: "",
  FINA_SRJJL: "",
  FINA_JSSKL: "",
  FINA_HTE: "",
  GLZDXM: "1001",
},
{
  ZDXM_STDCODE: "100201",
  ZDXM_STDNAME: "",
  FINA_YYSR: "",
  FINA_PGZHSY: "",
  FINA_SJZHSY: "",
  FINA_PGZHSYL: "",
  FINA_SJZHSYL: "",
  FINA_ZHSYLCE: "",
  FINA_SRJJL: "",
  FINA_JSSKL: "",
  FINA_HTE: "",
  GLZDXM: "1002",
},
{
  ZDXM_STDCODE: "1002",
  ZDXM_STDNAME: "",
  FINA_YYSR: "",
  FINA_PGZHSY: "",
  FINA_SJZHSY: "",
  FINA_PGZHSYL: "",
  FINA_SJZHSYL: "",
  FINA_ZHSYLCE: "",
  FINA_SRJJL: "",
  FINA_JSSKL: "",
  FINA_HTE: "",
  GLZDXM: "",
},
{
  ZDXM_STDCODE: "100202",
  ZDXM_STDNAME: "",
  FINA_YYSR: "",
  FINA_PGZHSY: "",
  FINA_SJZHSY: "",
  FINA_PGZHSYL: "",
  FINA_SJZHSYL: "",
  FINA_ZHSYLCE: "",
  FINA_SRJJL: "",
  FINA_JSSKL: "",
  FINA_HTE: "",
  GLZDXM: "1002",
},
]
function datatotree(par) {
  var length = par.length;
  for (var i = 0; i < length-1; i++) {
    for (var j = 0; j < length - i - 1; j++) {
      var str1=par[j].GLZDXM+par[j].ZDXM_STDCODE;
      var str2=par[j+1].GLZDXM+par[j+1].ZDXM_STDCODE;
      if(par[j].GLZDXM==null){
        str1=par[j].ZDXM_STDCODE;
      }
      if(data[j+1].GLZDXM==null){
        str2=par[j+1].ZDXM_STDCODE;
      }
      if (str1 > str2) {
        var temp = par[j + 1];
        par[j + 1] = par[j]
        par[j] = temp;
      }
    }
  }
  return par;
}
var data = datatotree(data)
console.log(data);

按照es6結(jié)構(gòu)賦值重寫上面代碼

var data = [{
  ZDXM_STDCODE: "100101",
  ZDXM_STDNAME: "",
  FINA_YYSR: "",
  FINA_PGZHSY: "",
  FINA_SJZHSY: "",
  FINA_PGZHSYL: "",
  FINA_SJZHSYL: "",
  FINA_ZHSYLCE: "",
  FINA_SRJJL: "",
  FINA_JSSKL: "",
  FINA_HTE: "",
  GLZDXM: "1001",
},
{
  ZDXM_STDCODE: "1001",
  ZDXM_STDNAME: "",
  FINA_YYSR: "",
  FINA_PGZHSY: "",
  FINA_SJZHSY: "",
  FINA_PGZHSYL: "",
  FINA_SJZHSYL: "",
  FINA_ZHSYLCE: "",
  FINA_SRJJL: "",
  FINA_JSSKL: "",
  FINA_HTE: "",
  GLZDXM: "",
},
{
  ZDXM_STDCODE: "100102",
  ZDXM_STDNAME: "",
  FINA_YYSR: "",
  FINA_PGZHSY: "",
  FINA_SJZHSY: "",
  FINA_PGZHSYL: "",
  FINA_SJZHSYL: "",
  FINA_ZHSYLCE: "",
  FINA_SRJJL: "",
  FINA_JSSKL: "",
  FINA_HTE: "",
  GLZDXM: "1001",
},
{
  ZDXM_STDCODE: "100201",
  ZDXM_STDNAME: "",
  FINA_YYSR: "",
  FINA_PGZHSY: "",
  FINA_SJZHSY: "",
  FINA_PGZHSYL: "",
  FINA_SJZHSYL: "",
  FINA_ZHSYLCE: "",
  FINA_SRJJL: "",
  FINA_JSSKL: "",
  FINA_HTE: "",
  GLZDXM: "1002",
},
{
  ZDXM_STDCODE: "1002",
  ZDXM_STDNAME: "",
  FINA_YYSR: "",
  FINA_PGZHSY: "",
  FINA_SJZHSY: "",
  FINA_PGZHSYL: "",
  FINA_SJZHSYL: "",
  FINA_ZHSYLCE: "",
  FINA_SRJJL: "",
  FINA_JSSKL: "",
  FINA_HTE: "",
  GLZDXM: "",
},
{
  ZDXM_STDCODE: "100202",
  ZDXM_STDNAME: "",
  FINA_YYSR: "",
  FINA_PGZHSY: "",
  FINA_SJZHSY: "",
  FINA_PGZHSYL: "",
  FINA_SJZHSYL: "",
  FINA_ZHSYLCE: "",
  FINA_SRJJL: "",
  FINA_JSSKL: "",
  FINA_HTE: "",
  GLZDXM: "1002",
},
]
function datatotree(par) {
  var length = par.length;
  for (var i = 0; i < length-1; i++) {
    for (var j = 0; j < length - i - 1; j++) {
      var str1=par[j].GLZDXM+par[j].ZDXM_STDCODE;
      var str2=par[j+1].GLZDXM+par[j+1].ZDXM_STDCODE;
      if(par[j].GLZDXM==null){
        str1=par[j].ZDXM_STDCODE;
      }
      if(data[j+1].GLZDXM==null){
        str2=par[j+1].ZDXM_STDCODE;
      }
      if (str1 > str2) {
        [par[j],par[j+1]]=[par[j+1],par[j]];
      }
    }
  }
  return par;
}
var data = datatotree(data)
console.log(data);

上面代碼排序之后結(jié)果

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/108155.html

相關(guān)文章

  • JavaScript 數(shù)據(jù)結(jié)構(gòu)與算法之美 - 冒泡排序、插入排序、選擇排序

    摘要:之所以把冒泡排序選擇排序插入排序放在一起比較,是因?yàn)樗鼈兊钠骄鶗r(shí)間復(fù)雜度都為。其中,冒泡排序就是原地排序算法。所以冒泡排序是穩(wěn)定的排序算法。選擇排序思路選擇排序算法的實(shí)現(xiàn)思路有點(diǎn)類似插入排序,也分已排序區(qū)間和未排序區(qū)間。 showImg(https://segmentfault.com/img/bVbuvnj?w=900&h=250); 1. 前言 算法為王。 想學(xué)好前端,先練好內(nèi)功,...

    canger 評論0 收藏0
  • JavaScript實(shí)現(xiàn)冒泡排序 可視化

    摘要:說明上次寫了實(shí)現(xiàn)冒泡排序,只是簡單的說了冒泡排序算法是什么,怎么實(shí)現(xiàn),這次來實(shí)現(xiàn)將冒泡排序的過程展現(xiàn)出來??偨Y(jié)上面的兩個(gè)版本的思路基本一樣,用一句話概括就是,記錄冒泡排序所有的改變,將這些改變一步一步的顯示出來。 說明 上次寫了 JavaScript實(shí)現(xiàn)冒泡排序 ,只是簡單的說了冒泡排序算法是什么,怎么實(shí)現(xiàn),這次來實(shí)現(xiàn)將冒泡排序的過程展現(xiàn)出來。 解釋 先來個(gè)簡單的版本,看效果圖 sh...

    RebeccaZhong 評論0 收藏0
  • JavaScript實(shí)現(xiàn)冒泡排序

    說明 對數(shù)組進(jìn)行 冒泡排序 算是比較簡單的,冒泡排序也是容易理解的一種排序算法了,在面試的時(shí)候,很可能就會(huì)問到。 實(shí)現(xiàn)原理 數(shù)組中有 n 個(gè)數(shù),比較每相鄰兩個(gè)數(shù),如果前者大于后者,就把兩個(gè)數(shù)交換位置;這樣一來,第一輪就可以選出一個(gè)最大的數(shù)放在最后面;那么經(jīng)過 n-1(數(shù)組的 length - 1) 輪,就完成了所有數(shù)的排序。 showImg(https://segmentfault.com/img...

    Aomine 評論0 收藏0
  • Javascript實(shí)現(xiàn)冒泡排序與快速排序以及對快速排序的性能優(yōu)化

    摘要:實(shí)現(xiàn)快速排序介紹通過一趟排序?qū)⒁判虻臄?shù)據(jù)分割成獨(dú)立的兩部分,其中一部分的所有數(shù)據(jù)都比另外一部分的所有數(shù)據(jù)都要小,然后再按此方法對這兩部分?jǐn)?shù)據(jù)分別進(jìn)行快速排序,整個(gè)排序過程可以遞歸進(jìn)行,以此達(dá)到整個(gè)數(shù)據(jù)變成有序序列。 冒泡排序 介紹 重復(fù)遍歷要排序的元素列,依次比較兩個(gè)相鄰的元素,前一個(gè)元素若比后一個(gè)元素大則互換位置。以升序排序?yàn)槔?,最大的元素?huì)在第一次遍歷后冒泡到數(shù)組的末端。假如數(shù)組...

    dadong 評論0 收藏0
  • JavaScript排序,不只是冒泡

    摘要:不過說到排序,最容易想到的就是冒泡排序,選擇排序,插入排序了。一是影響太小,而是我們?nèi)说男蕟栴},一分鐘能從頭寫個(gè)冒泡選擇插入的排序方法,而換成是歸并排序呢原文發(fā)表在我的博客排序,不只是冒泡,歡迎訪問 非常非常推薦大家去讀一本gitBook上的書 - 十大經(jīng)典排序算法 : https://sort.hust.cc/ , 本文的動(dòng)圖和演示代碼均是這里面的。 做編程,排序是個(gè)必然的需求。前...

    leeon 評論0 收藏0
  • javascript 算法整理

    摘要:快速排序快速排序原始數(shù)組二分查找冒泡排序冒泡排序耗時(shí)冒泡排序耗時(shí)改進(jìn)后的冒泡排序耗時(shí)改進(jìn)后的冒泡排序耗時(shí)排序前冒泡排序后改進(jìn)的冒泡排序后選擇排序選擇排序耗時(shí)選擇排序耗時(shí)排序前排序后插入排序插入排序耗時(shí)插入排序耗時(shí)排序前排序后 快速排序 function quickSort(ary, isDesc) { var len = ary.length; if (len < 3)...

    xbynet 評論0 收藏0

發(fā)表評論

0條評論

wanghui

|高級講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<