基于JavaScript實(shí)現(xiàn)的插入排序算法分析
本文實(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è)計有所幫助。
- JS實(shí)現(xiàn)冒泡排序,插入排序和快速排序并排序輸出
- js排序動畫模擬-插入排序
- javascript算法學(xué)習(xí)(直接插入排序)
- JS折半插入排序算法實(shí)例
- javascript數(shù)據(jù)結(jié)構(gòu)之雙鏈表插入排序?qū)嵗斀?/a>
- JavaScript插入排序算法原理與實(shí)現(xiàn)方法示例
- JavaScript實(shí)現(xiàn)經(jīng)典排序算法之插入排序
- JS排序算法之冒泡排序,選擇排序與插入排序?qū)嵗治?/a>
- JavaScript實(shí)現(xiàn)鏈表插入排序和鏈表歸并排序
- JS實(shí)現(xiàn)的冒泡排序,快速排序,插入排序算法示例
- JavaScript數(shù)據(jù)結(jié)構(gòu)與算法之基本排序算法定義與效率比較【冒泡、選擇、插入排序】
- JS插入排序簡單理解與實(shí)現(xiàn)方法分析
相關(guān)文章
基于Phantomjs生成PDF的實(shí)現(xiàn)方法
這篇文章主要介紹了基于Phantomjs生成PDF的實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了Phantomjs結(jié)合nodejs生成pdf的操作步驟與相關(guān)技巧,需要的朋友可以參考下2016-11-11three.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-11Cropper.js進(jìn)階之實(shí)現(xiàn)圓形頭像裁剪功能示例
這篇文章主要為大家介紹了Cropper.js進(jìn)階之實(shí)現(xiàn)圓形頭像裁剪功能示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05js使用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)算符(與、或)
本篇文章分享的是 JS 當(dāng)中的邏輯運(yùn)算符與、或,也就是 && 、 || ,沒錯,別看這簡簡單單的幾個運(yùn)算符,雖然這是最基礎(chǔ)的知識,但其中隱藏的奧秘卻十分耐人尋味,接下來本文就為大家一一揭開這簡單的運(yùn)算符背后的奇妙之處。2016-12-12