最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javascript基本常用排序算法解析

 更新時間:2017年09月27日 16:50:28   作者:hreo小呆  
這篇文章主要為大家詳細介紹了javascript基本常用排序算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下

備注:內(nèi)容大部分從網(wǎng)上復(fù)制,代碼為自己手寫。僅做知識的溫故知新,并非原創(chuàng)。

1.冒泡排序(Bubble Sort)

(1)算法描述

冒泡排序是一種簡單的排序算法。它重復(fù)地走訪過要排序的數(shù)列,一次比較兩個元素,如果它們的順序錯誤就把它們交換過來。走訪數(shù)列的工作是重復(fù)地進行直到?jīng)]有再需要交換,也就是說該數(shù)列已經(jīng)排序完成。這個算法的名字由來是因為越小的元素會經(jīng)由交換慢慢“浮”到數(shù)列的頂端。

(2)算法描述和實現(xiàn)

具體算法描述如下:

<1>.比較相鄰的元素。如果第一個比第二個大,就交換它們兩個;<2>.對每一對相鄰元素作同樣的工作,從開始第一對到結(jié)尾的最后一對,這樣在最后的元素應(yīng)該會是最大的數(shù);<3>.針對所有的元素重復(fù)以上的步驟,除了最后一個;<4>.重復(fù)步驟1~3,直到排序完成。

JavaScript代碼實現(xiàn):

改進冒泡排序:設(shè)置一標志性變量pos,用于記錄每趟排序中最后一次進行交換的位置。由于pos位置之后的記錄均已交換到位,故在進行下一趟排序時只要掃描到pos位置即可。

改進后算法如下:

傳統(tǒng)冒泡排序中每一趟排序操作只能找到一個最大值或最小值,我們考慮利用在每趟排序中進行正向和反向兩遍冒泡的方法一次可以得到兩個最終值(最大者和最小者) , 從而使排序趟數(shù)幾乎減少了一半。

改進后的算法為:

三種算法的運行時間為:

由運行結(jié)果可以看出時間復(fù)雜度更低,耗時更短了。大家可以親自嘗試下,運行的時候最好將三種算法寫在一個文件中運行,否則會由于瀏覽器等原因產(chǎn)生誤差。

冒泡排序的動態(tài)圖演示:

(3)算法分析

最佳情況:T(n) = O(n)

  當輸入的數(shù)據(jù)已經(jīng)是正序時

最壞情況:T(n) = O(n2)

  當輸入的數(shù)據(jù)是反序時

平均情況:T(n) = O(n2)

2.選擇排序(Selection Sort)

表現(xiàn)最穩(wěn)定的排序算法之一,因為無論什么數(shù)據(jù)進去都是O(n²)的時間復(fù)雜度…..所以用到它的時候,數(shù)據(jù)規(guī)模越小越好。唯一的好處可能就是不占用額外的內(nèi)存空間了吧。理論上講,選擇排序可能也是平時排序一般人想到的最多的排序方法了吧。

(1)算法簡介

選擇排序(Selection-sort)是一種簡單直觀的排序算法。它的工作原理:首先在未排序序列中找到最?。ù螅┰?,存放到排序序列的起始位置,然后,再從剩余未排序元素中繼續(xù)尋找最小(大)元素,然后放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。

(2)算法描述和實現(xiàn)

n個記錄的直接選擇排序可經(jīng)過n-1趟直接選擇排序得到有序結(jié)果。具體算法描述如下:

<1>.初始狀態(tài):無序區(qū)為R[1..n],有序區(qū)為空;<2>.第i趟排序(i=1,2,3…n-1)開始時,當前有序區(qū)和無序區(qū)分別為R[1..i-1]和R(i..n)。該趟排序從當前無序區(qū)中-選出關(guān)鍵字最小的記錄 R[k],將它與無序區(qū)的第1個記錄R交換,使R[1..i]和R[i+1..n)分別變?yōu)橛涗泜€數(shù)增加1個的新有序區(qū)和記錄個數(shù)減少1個的新無序區(qū);<3>.n-1趟結(jié)束,數(shù)組有序化了。

Javascript代碼實現(xiàn):

(3)算法分析

最佳情況:T(n) = O(n2)最差情況:T(n) = O(n2)平均情況:T(n) = O(n2)

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • JavaScript實現(xiàn)瀑布流布局的3種方式

    JavaScript實現(xiàn)瀑布流布局的3種方式

    這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)瀑布流布局的3種方式,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • 微信小程序使用wx.request請求服務(wù)器json數(shù)據(jù)并渲染到頁面操作示例

    微信小程序使用wx.request請求服務(wù)器json數(shù)據(jù)并渲染到頁面操作示例

    這篇文章主要介紹了微信小程序使用wx.request請求服務(wù)器json數(shù)據(jù)并渲染到頁面操作,結(jié)合實例形式分析了微信小程序使用wx.request發(fā)送網(wǎng)絡(luò)請求及返回結(jié)果渲染到wxml界面相關(guān)操作技巧,需要的朋友可以參考下
    2019-03-03
  • js實現(xiàn)簡單模態(tài)窗口,背景灰顯

    js實現(xiàn)簡單模態(tài)窗口,背景灰顯

    昨天中午做項目需要一個模態(tài)窗口,想起上一個公司的項目經(jīng)理曾經(jīng)做過一個比較牛的模態(tài)窗口,至今沒用搞清楚實現(xiàn)原理,平時也沒有時間去分析,試著自己做了一個,用了一天的時間終于完成了,給大家一起分享, 也希望高手多提意見。第一次在博客園上發(fā)文章,挺高興的。
    2008-11-11
  • bootstrap select2插件用ajax來獲取和顯示數(shù)據(jù)的實例

    bootstrap select2插件用ajax來獲取和顯示數(shù)據(jù)的實例

    今天小編就為大家分享一篇bootstrap select2插件用ajax來獲取和顯示數(shù)據(jù)的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • layui實現(xiàn)下拉復(fù)選功能的例子(包括數(shù)據(jù)的回顯與上傳)

    layui實現(xiàn)下拉復(fù)選功能的例子(包括數(shù)據(jù)的回顯與上傳)

    今天小編大家分享一篇layui實現(xiàn)下拉復(fù)選功能的例子(包括數(shù)據(jù)的回顯與上傳),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • JavaScript控制臺的更多功能

    JavaScript控制臺的更多功能

    這篇文章主要介紹了JavaScript控制臺的更多功能,想了解控制臺更多功能的同學,一定要看一下
    2021-04-04
  • javascript類繼承的實現(xiàn)方法

    javascript類繼承的實現(xiàn)方法

    JavaScript是一種面向?qū)ο蟮恼Z言,而繼承是面向?qū)ο缶幊痰囊粋€重要特性,在JavaScript中,繼承的實現(xiàn)方式有多種,本文將介紹javascript類的繼承的實現(xiàn),感興趣的朋友一起看看吧
    2023-10-10
  • js判斷傳入時間和當前時間大小實例(超簡單)

    js判斷傳入時間和當前時間大小實例(超簡單)

    下面小編就為大家分享一篇js判斷傳入時間和當前時間大小實例(超簡單),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • 微信小程序前后端數(shù)據(jù)交互的詳細圖文教程

    微信小程序前后端數(shù)據(jù)交互的詳細圖文教程

    這篇文章主要給大家介紹了關(guān)于微信小程序前后端數(shù)據(jù)交互的相關(guān)資料,通過小程序向后端發(fā)送請求,然后后端從數(shù)據(jù)庫獲取車源和求購的數(shù)量反饋給小程序,最后將這兩個數(shù)據(jù)顯示出來,需要的朋友可以參考下
    2022-10-10
  • JS實現(xiàn)兩周內(nèi)自動登錄功能

    JS實現(xiàn)兩周內(nèi)自動登錄功能

    這篇文章主要為大家詳細介紹了JS實現(xiàn)兩周內(nèi)自動登錄功能的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03

最新評論

雅安市| 浪卡子县| 洮南市| 达日县| 株洲市| 汉沽区| 青浦区| 呼伦贝尔市| 彝良县| 兰坪| 门头沟区| 永春县| 明溪县| 萍乡市| 中宁县| 旅游| 芮城县| 桃园县| 明溪县| 朝阳区| 新巴尔虎右旗| 新乐市| 任丘市| 鄂托克前旗| 灵石县| 乌恰县| 泸州市| 军事| 尖扎县| 柳州市| 兰溪市| 彭水| 旺苍县| 溧水县| 普宁市| 溧阳市| 冷水江市| 武平县| 乐亭县| 巴林左旗| 嵩明县|