亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

基于JavaScript實(shí)現(xiàn)的插入排序算法分析

 更新時間:2017年04月14日 09:51:04   作者:布瑞澤的童話  
這篇文章主要介紹了基于JavaScript實(shí)現(xiàn)的插入排序算法,結(jié)合實(shí)例形式詳細(xì)分析了插入排序的原理、操作步驟及javascript相關(guān)實(shí)現(xiàn)技巧與注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了基于JavaScript實(shí)現(xiàn)的插入排序算法。分享給大家供大家參考,具體如下:

根據(jù)排序過程中使用的存儲器不同,可以將排序方法分為兩大類:內(nèi)部排序外部排序。

內(nèi)部排序是指待排序記錄存放在計算機(jī)隨機(jī)存儲器中進(jìn)行的排序過程;外部排序指的是待排序的記錄數(shù)量很大,以致內(nèi)存一次不能容納全部記錄,在排序過程中尚需對外存進(jìn)行訪問的排序過程。

下面介紹幾種常見的內(nèi)部排序方式:

插入排序

插入排序是一種最簡單的排序方法,它的基本操作是將一個記錄插入已排好序的有序表中,從而得到一個新的、記錄數(shù)加1的有序表。

插入排序有兩個循環(huán),外循環(huán)將數(shù)組元素挨個移動,而內(nèi)循環(huán)則對外循環(huán)中選定的元素及它后面的那個元素比較。如果外循環(huán)中選中元素小,那么數(shù)組元素會向右移動,為內(nèi)循環(huán)中的這個元素騰出位置。

下面我們通過js實(shí)現(xiàn)直接插入排序過程:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>JavaScript插入排序</title>
  </head>
  <body>
<script type="text/javascript">
  function insertSort(nums){//插入排序
    var temp,
      inner;
    for(var outer=1;outer<nums.length;outer++){//外循環(huán)選中元素
      temp=nums[outer];//選中元素
      inner=outer;
      while(inner>0&&(nums[inner-1]>=temp)){//內(nèi)循環(huán)與選中元素對比
        nums[inner]=nums[inner-1];//如果選中元素前面的元素大,則前面的元素移到右側(cè)
        inner--;//依次比較
      }
      nums[inner]=temp;//直到找到正確的位置
    }
  }
  function show(nums){//顯示數(shù)組
    for(var i=0;i<nums.length;i++){
      document.write(nums[i]+' ');
    }
    document.write('<br>');
  }
  var nums=[6,10,0,6,5,8,7,4,2,7];
  show(nums);//6 10 0 6 5 8 7 4 2 7
  insertSort(nums);
  show(nums);//0 2 4 5 6 6 7 7 8 10
</script>
  </body>
</html>

排序過程如下:

可以看到,插入排序的運(yùn)行并非通過數(shù)據(jù)交換,而是通過將較大的數(shù)組元素移動到右側(cè),為數(shù)組左側(cè)的較小元素騰出位置。其時間復(fù)雜度為O(n2)。

更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》、《JavaScript排序算法總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》及《JavaScript錯誤與調(diào)試技巧總結(jié)

希望本文所述對大家JavaScript程序設(shè)計有所幫助。

相關(guān)文章

  • input框中的name和id的區(qū)別

    input框中的name和id的區(qū)別

    這篇文章主要介紹了input框中的name和id的區(qū)別介紹,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-11-11
  • 不能再簡單的無閃刷新驗(yàn)證碼原理很簡單

    不能再簡單的無閃刷新驗(yàn)證碼原理很簡單

    不能再簡單的無閃刷新驗(yàn)證碼原理很簡單...
    2007-11-11
  • 原生js驗(yàn)證簡潔注冊登錄頁面

    原生js驗(yàn)證簡潔注冊登錄頁面

    這篇文章主要為大家詳細(xì)介紹了原生js驗(yàn)證簡潔美觀注冊登錄頁面的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • 基于Phantomjs生成PDF的實(shí)現(xiàn)方法

    基于Phantomjs生成PDF的實(shí)現(xiàn)方法

    這篇文章主要介紹了基于Phantomjs生成PDF的實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了Phantomjs結(jié)合nodejs生成pdf的操作步驟與相關(guān)技巧,需要的朋友可以參考下
    2016-11-11
  • 使用Layui搭建后臺管理界面的操作方法

    使用Layui搭建后臺管理界面的操作方法

    今天小編就為大家分享一篇使用Layui搭建后臺管理界面的操作方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • JS 特殊運(yùn)算符的使用

    JS 特殊運(yùn)算符的使用

    JavaScript中包含了一系列不常見但功能強(qiáng)大的特殊運(yùn)算符,如空值合并運(yùn)算符(??)、可選鏈運(yùn)算符(?.)等,這些運(yùn)算符在特定場景下極大地簡化了代碼的復(fù)雜度,并提高了開發(fā)效率,通過深入了解這些特殊運(yùn)算符,開發(fā)者可以更加高效地處理各種數(shù)據(jù)和邏輯
    2024-09-09
  • three.js中文文檔學(xué)習(xí)之如何本地運(yùn)行詳解

    three.js中文文檔學(xué)習(xí)之如何本地運(yùn)行詳解

    這篇文章主要給大家介紹了關(guān)于three.js中文文檔學(xué)習(xí)之如何在本地運(yùn)行的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • Cropper.js進(jìn)階之實(shí)現(xiàn)圓形頭像裁剪功能示例

    Cropper.js進(jìn)階之實(shí)現(xiàn)圓形頭像裁剪功能示例

    這篇文章主要為大家介紹了Cropper.js進(jìn)階之實(shí)現(xiàn)圓形頭像裁剪功能示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • js使用oclif開發(fā)命令行工具實(shí)現(xiàn)批量修改文件名

    js使用oclif開發(fā)命令行工具實(shí)現(xiàn)批量修改文件名

    前端開發(fā)工作中常用的很多CLI命令相信大家已經(jīng)很熟悉了,很方便很實(shí)用,能夠快速幫助你創(chuàng)建項(xiàng)目,快速執(zhí)行某些重復(fù)性操作,下面我們就來學(xué)習(xí)一下如何使用CLI命令批量修改文件名吧
    2023-12-12
  • 深入了解JavaScript的邏輯運(yùn)算符(與、或)

    深入了解JavaScript的邏輯運(yùn)算符(與、或)

    本篇文章分享的是 JS 當(dāng)中的邏輯運(yùn)算符與、或,也就是 && 、 || ,沒錯,別看這簡簡單單的幾個運(yùn)算符,雖然這是最基礎(chǔ)的知識,但其中隱藏的奧秘卻十分耐人尋味,接下來本文就為大家一一揭開這簡單的運(yùn)算符背后的奇妙之處。
    2016-12-12

最新評論