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

基于JavaScript實現(xiàn)的希爾排序算法分析

 更新時間:2017年04月14日 10:23:49   作者:布瑞澤的童話  
這篇文章主要介紹了基于JavaScript實現(xiàn)的希爾排序算法,簡單分析了希爾排序的原理并結合實例形式給出了javascript實現(xiàn)希爾排序的操作步驟與相關注意事項,需要的朋友可以參考下

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

通過對直接插入排序的分析,可知其時間復雜度為O(n2),但是,如果待排序序列為正序時,其時間復雜度可提高至O(n)。希爾排序正是對此進行改進的排序。希爾排序的核心理念與插入排序不同,它會首先比較距離較遠的元素,而非相鄰元素。通過定義一個間隔序列來表示在排序過程中進行比較的元素之間有多遠的間隔。

下圖演示了希爾排序中間隔序列是如何運行的:

下面我們通過js來實現(xiàn)希爾排序,代碼如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JavaScript希爾排序</title>
</head>
<body>
<script type="text/javascript">
  function shellSort(nums){//希爾排序
    var gaps=[5,3,1];//定義間隔區(qū)間
    for(var g=0;g<gaps.length;g++){//一個一個間隔值開始
      for(var i=gaps[g];i<nums.length;i++){//以間隔值遍歷
        var temp=nums[i];//選中元素
        for(var j=i;j>=gaps[g]&&nums[j-gaps[g]]>temp;j-=gaps[g]){//如果前面一個大于后面一個
          nums[j]=nums[j-gaps[g]];//后移
        }
        nums[j]=temp;//填補
      }
    }
  }
  function show(nums){//顯示數(shù)組
    for(var i=0;i<nums.length;i++){
      document.write(nums[i]+' ');
    }
    document.write('<br>');
  }
  var nums=[6,0,2,9,3,5,8,0,5,4];
  show(nums);//6 0 2 9 3 5 8 0 5 4
  shellSort(nums);//希爾排序
  show(nums);//0 0 2 3 4 5 5 6 8 9
</script>
</body>
</html>

其排序過程如下:

希爾排序根據間隔序列的選取不同,時間復雜度也不同,但是需要注意,應該使間隔序列中的值沒有除1以外的公因子,并且最后一個間隔值必須等于1。

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

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

相關文章

  • js 彈出對話框(遮罩)透明,可拖動的簡單實例

    js 彈出對話框(遮罩)透明,可拖動的簡單實例

    下面小編就為大家?guī)硪黄猨s 彈出對話框(遮罩)透明,可拖動的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • js中reverse函數(shù)的用法詳解

    js中reverse函數(shù)的用法詳解

    本篇文章主要是對js中reverse函數(shù)的用法進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2013-12-12
  • @ResponseBody 和 @RequestBody 注解的區(qū)別

    @ResponseBody 和 @RequestBody 注解的區(qū)別

    這篇文章主要介紹了@ResponseBody 和 @RequestBody 注解的區(qū)別的相關資料,需要的朋友可以參考下
    2017-03-03
  • Bootstrap實現(xiàn)導航欄的2種方式

    Bootstrap實現(xiàn)導航欄的2種方式

    這篇文章主要為大家詳細介紹了Bootstrap實現(xiàn)導航欄的2種方式,一是利用按鈕組實現(xiàn)、二是Bootstrap專門做了相應的css類,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • js獲取鍵盤按鍵響應事件(兼容各瀏覽器)

    js獲取鍵盤按鍵響應事件(兼容各瀏覽器)

    js獲取鍵盤按鍵響應事件(兼容各瀏覽器),需要的朋友可以參考一下
    2013-05-05
  • Javascript 引擎工作機制詳解

    Javascript 引擎工作機制詳解

    我們需要引入幾個相關的概念:執(zhí)行環(huán)境棧、全局對象、執(zhí)行環(huán)境、變量對象、活動對象、作用域和作用域鏈等,這些概念正是JS引擎工作的核心組件。這篇文章的目的不是孤立的為你講解每一個概念需要的朋友可以參考下
    2016-11-11
  • JS實現(xiàn)京東商品分類側邊欄

    JS實現(xiàn)京東商品分類側邊欄

    這篇文章主要為大家詳細介紹了JS實現(xiàn)京東商品分類側邊欄,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • 詳解微信小程序-掃一掃 wx.scanCode() 掃碼大變身

    詳解微信小程序-掃一掃 wx.scanCode() 掃碼大變身

    這篇文章主要介紹了微信小程序-掃一掃wx.scanCode() 掃碼大變身,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • javascript從作用域鏈談閉包

    javascript從作用域鏈談閉包

    這篇文章主要從作用域鏈談閉包,閉包(closure)是Javascript語言的一個難點,也是它的特色,很多高級應用都要依靠閉包實現(xiàn),本文針對閉包進行學習,需要的朋友可以參考下
    2015-12-12
  • JavaScript實現(xiàn)圖片合成下載的示例

    JavaScript實現(xiàn)圖片合成下載的示例

    這篇文章主要介紹了JavaScript實現(xiàn)圖片合成下載的示例,幫助大家更好的理解和學習JavaScript,感興趣的朋友可以了解下
    2020-11-11

最新評論