摘要:代碼講解創建一個數組方便實驗。給類增加方法把指向存儲起來當前指向也就是調用方法的數組實例遍歷實例里的每個元素為什么因為第一遍循環的時候最大的數字已經被換到最后一位去了,所以可以少做一次循環這邊循環和上面是同樣的道理,但是呢。
1.代碼講解
var arr = [4,21,5,10,3]; //創建一個數組,方便實驗。 Array.prototype.sorts = function(){ //給Array類增加sorts方法 var _this = this; //把this指向存儲起來,當前this指向Array(也就是調用sorts方法的數組,Array實例) for(var i=0;i<_this.length-1;i++){ //遍歷Array(實例)里的每個元素.為什么-1,因為第一遍循環的時候最大的數字已經被換到最后一位去了,所以可以少做一次循環. for(var k=0;k<_this.length-i-1;k++){ //這邊循環-1和上面-1是同樣的道理,但是-i呢。因為當i=0時,最大一位數已經到最后去了,i=1第二大的數字也到最后第二位去了,所以沒有必要再去比較后面已經排完序的數字了. if(_this[k] > _this[k+1]){ //這邊是冒泡排序的核心,當左邊數字比右邊數字大的時候,執行以下代碼. //這邊大于>改為小于的話,排序就會倒過來,你不妨可以試試. var temp = _this[k]; //聲明變量temp,把左邊的元素賦值給它.假設左邊的元素是A,temp就等于A了. _this[k] = _this[k+1]; //右邊的元素賦值給左邊的元素.假設右邊的元素為B,那_this[k]就等于B了. _this[k+1] = temp; //把temp元素賦值給右邊的元素,那右邊的元素_this[k+1]就等于A了. //最后的效果就是左邊的元素_this[k]為B,右邊的元素_this[k+1]為A,它們互相換了位置. } } } return _this; //最后返回這個數組 } console.log(arr.sorts()); //打印出[3.4.5.10.21];2.代碼運行
i=0時:[4,5,10,3,21], i=1時:[4,5,3,10,21], i=2時:[4,3,5,10,21], i=3時:[3,4,5,10,21].3.補充
上面的代碼舉例是數字,其實也可以對字母進行排序,比如["d","a","c"].sorts().打印出來就是["a","c","d"].字母的大小比較是來自于ASCLL碼,每一個字母都有自己的一個ASCLL碼,有興趣的朋友可以去了解下.
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/82395.html
摘要:個人前端文章整理從最開始萌生寫文章的想法,到著手開始寫,再到現在已經一年的時間了,由于工作比較忙,更新緩慢,后面還是會繼更新,現將已經寫好的文章整理一個目錄,方便更多的小伙伴去學習。 showImg(https://segmentfault.com/img/remote/1460000017490740?w=1920&h=1080); 個人前端文章整理 從最開始萌生寫文章的想法,到著手...
摘要:本文除了會帶大家了解一些方法后面簡寫為方法的基本定義和用法之外,還會探討一下方法到底是使用的什么排序算法。下面我們來看看方法到底是如何排序的。 ??本文除了會帶大家了解一些Array.prototypr.sort()方法(后面簡寫為sort()方法)的基本定義和用法之外,還會探討一下sort()方法到底是使用的什么排序算法。簡單度娘了一下,網上的那些sort()方法詳解文章,大多只說了...
摘要:上一篇數據結構與算法樹寫在前面這是學習數據結構與算法的最后一篇博客,也是在面試中常常會被問到的一部分內容排序和搜索。 上一篇:JS數據結構與算法_樹 寫在前面 這是《學習JavaScript數據結構與算法》的最后一篇博客,也是在面試中常常會被問到的一部分內容:排序和搜索。在這篇博客之前,我每每看到排序頭就是大的,心里想著類似冒泡排序,兩層遍歷啪啪啪就完事了,然后再也無心去深入研究排序相...
閱讀 825·2019-08-30 15:55
閱讀 1406·2019-08-30 13:55
閱讀 1983·2019-08-29 17:13
閱讀 2840·2019-08-29 15:42
閱讀 1331·2019-08-26 14:04
閱讀 1016·2019-08-26 13:31
閱讀 3271·2019-08-26 11:34
閱讀 828·2019-08-23 18:25