摘要:代碼講解創(chuàng)建一個(gè)數(shù)組方便實(shí)驗(yàn)。給類增加方法把指向存儲(chǔ)起來(lái)當(dāng)前指向也就是調(diào)用方法的數(shù)組實(shí)例遍歷實(shí)例里的每個(gè)元素為什么因?yàn)榈谝槐檠h(huán)的時(shí)候最大的數(shù)字已經(jīng)被換到最后一位去了,所以可以少做一次循環(huán)這邊循環(huán)和上面是同樣的道理,但是呢。
1.代碼講解
var arr = [4,21,5,10,3]; //創(chuàng)建一個(gè)數(shù)組,方便實(shí)驗(yàn)。 Array.prototype.sorts = function(){ //給Array類增加sorts方法 var _this = this; //把this指向存儲(chǔ)起來(lái),當(dāng)前this指向Array(也就是調(diào)用sorts方法的數(shù)組,Array實(shí)例) for(var i=0;i<_this.length-1;i++){ //遍歷Array(實(shí)例)里的每個(gè)元素.為什么-1,因?yàn)榈谝槐檠h(huán)的時(shí)候最大的數(shù)字已經(jīng)被換到最后一位去了,所以可以少做一次循環(huán). for(var k=0;k<_this.length-i-1;k++){ //這邊循環(huán)-1和上面-1是同樣的道理,但是-i呢。因?yàn)楫?dāng)i=0時(shí),最大一位數(shù)已經(jīng)到最后去了,i=1第二大的數(shù)字也到最后第二位去了,所以沒有必要再去比較后面已經(jīng)排完序的數(shù)字了. if(_this[k] > _this[k+1]){ //這邊是冒泡排序的核心,當(dāng)左邊數(shù)字比右邊數(shù)字大的時(shí)候,執(zhí)行以下代碼. //這邊大于>改為小于的話,排序就會(huì)倒過(guò)來(lái),你不妨可以試試. var temp = _this[k]; //聲明變量temp,把左邊的元素賦值給它.假設(shè)左邊的元素是A,temp就等于A了. _this[k] = _this[k+1]; //右邊的元素賦值給左邊的元素.假設(shè)右邊的元素為B,那_this[k]就等于B了. _this[k+1] = temp; //把temp元素賦值給右邊的元素,那右邊的元素_this[k+1]就等于A了. //最后的效果就是左邊的元素_this[k]為B,右邊的元素_this[k+1]為A,它們互相換了位置. } } } return _this; //最后返回這個(gè)數(shù)組 } console.log(arr.sorts()); //打印出[3.4.5.10.21];2.代碼運(yùn)行
i=0時(shí):[4,5,10,3,21], i=1時(shí):[4,5,3,10,21], i=2時(shí):[4,3,5,10,21], i=3時(shí):[3,4,5,10,21].3.補(bǔ)充
上面的代碼舉例是數(shù)字,其實(shí)也可以對(duì)字母進(jìn)行排序,比如["d","a","c"].sorts().打印出來(lái)就是["a","c","d"].字母的大小比較是來(lái)自于ASCLL碼,每一個(gè)字母都有自己的一個(gè)ASCLL碼,有興趣的朋友可以去了解下.
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/82395.html
摘要:個(gè)人前端文章整理從最開始萌生寫文章的想法,到著手開始寫,再到現(xiàn)在已經(jīng)一年的時(shí)間了,由于工作比較忙,更新緩慢,后面還是會(huì)繼更新,現(xiàn)將已經(jīng)寫好的文章整理一個(gè)目錄,方便更多的小伙伴去學(xué)習(xí)。 showImg(https://segmentfault.com/img/remote/1460000017490740?w=1920&h=1080); 個(gè)人前端文章整理 從最開始萌生寫文章的想法,到著手...
摘要:本文除了會(huì)帶大家了解一些方法后面簡(jiǎn)寫為方法的基本定義和用法之外,還會(huì)探討一下方法到底是使用的什么排序算法。下面我們來(lái)看看方法到底是如何排序的。 ??本文除了會(huì)帶大家了解一些Array.prototypr.sort()方法(后面簡(jiǎn)寫為sort()方法)的基本定義和用法之外,還會(huì)探討一下sort()方法到底是使用的什么排序算法。簡(jiǎn)單度娘了一下,網(wǎng)上的那些sort()方法詳解文章,大多只說(shuō)了...
摘要:算法思想冒泡排序?qū)儆谝环N典型的交換排序。冒泡排序常規(guī)版代碼實(shí)現(xiàn)下面詳細(xì)分析一下常規(guī)版的冒泡排序,整個(gè)算法流程其實(shí)就是上面實(shí)例所分析的過(guò)程。 算法思想 冒泡排序?qū)儆谝环N典型的交換排序。 交換排序顧名思義就是通過(guò)元素的兩兩比較,判斷是否符合要求,如過(guò)不符合就交換位置來(lái)達(dá)到排序的目的。冒泡排序名字的由來(lái)就是因?yàn)樵诮粨Q過(guò)程中,類似水冒泡,小(大)的元素經(jīng)過(guò)不斷的交換由水底慢慢的浮到水的...
摘要:上一篇數(shù)據(jù)結(jié)構(gòu)與算法樹寫在前面這是學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法的最后一篇博客,也是在面試中常常會(huì)被問到的一部分內(nèi)容排序和搜索。 上一篇:JS數(shù)據(jù)結(jié)構(gòu)與算法_樹 寫在前面 這是《學(xué)習(xí)JavaScript數(shù)據(jù)結(jié)構(gòu)與算法》的最后一篇博客,也是在面試中常常會(huì)被問到的一部分內(nèi)容:排序和搜索。在這篇博客之前,我每每看到排序頭就是大的,心里想著類似冒泡排序,兩層遍歷啪啪啪就完事了,然后再也無(wú)心去深入研究排序相...
閱讀 844·2019-08-30 15:55
閱讀 1419·2019-08-30 13:55
閱讀 1996·2019-08-29 17:13
閱讀 2850·2019-08-29 15:42
閱讀 1339·2019-08-26 14:04
閱讀 1027·2019-08-26 13:31
閱讀 3279·2019-08-26 11:34
閱讀 840·2019-08-23 18:25