欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于JavaScript實現的插入排序算法分析

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

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

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

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

下面介紹幾種常見的內部排序方式:

插入排序

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

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

下面我們通過js實現直接插入排序過程:

<!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)){//內循環(huán)與選中元素對比
        nums[inner]=nums[inner-1];//如果選中元素前面的元素大,則前面的元素移到右側
        inner--;//依次比較
      }
      nums[inner]=temp;//直到找到正確的位置
    }
  }
  function show(nums){//顯示數組
    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>

排序過程如下:

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

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《JavaScript數據結構與算法技巧總結》、《JavaScript數學運算用法總結》、《JavaScript排序算法總結》、《JavaScript遍歷算法與技巧總結》、《JavaScript查找算法技巧總結》及《JavaScript錯誤與調試技巧總結

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

相關文章

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

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

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

    不能再簡單的無閃刷新驗證碼原理很簡單

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

    原生js驗證簡潔注冊登錄頁面

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

    基于Phantomjs生成PDF的實現方法

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

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

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

    JS 特殊運算符的使用

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

    three.js中文文檔學習之如何本地運行詳解

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

    Cropper.js進階之實現圓形頭像裁剪功能示例

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

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

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

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

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

最新評論