javascript数组排序和prototype详解
生活随笔
收集整理的這篇文章主要介紹了
javascript数组排序和prototype详解
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
原型的概念::原型對(duì)象里的所有屬性和方法 被所有構(gòu)造函數(shù)實(shí)例化出來(lái)的對(duì)象所共享,類似于java中的 static
正因?yàn)楣蚕硭詥我坏牟僮?就會(huì)影響了全局,因此使用時(shí)需注意
?
基于prototype:為數(shù)組擴(kuò)展方法
//獲取數(shù)組最大值
function getMax(){var max=this[0];for(var i=0;i<this.length;i++){if(max<this[i]){max=this[i];}}return max; }
//獲取數(shù)組最小值 function getMin(){var min=0;for(var x=0;x<this.length;x++){if(this[x]<this[min]){min=x;}}return this[min]; } Array.prototype.getMax=getMax; Array.prototype.getMin=getMin;
?
?
作者曾經(jīng)在js開發(fā)時(shí)候經(jīng)常用到數(shù)組的排序,以下是作者對(duì)數(shù)組排序的總結(jié)以及其他方法的擴(kuò)展
var Array={}; Array.sorting = {//利用sort方法進(jìn)行排序 systemSort: function(arr){return arr.sort();},//冒泡排序 bubbleSort: function(arr){var len=arr.length, tmp;for(var i=0;i<len-1;i++){for(var j=0;j<len-1-i;j++){if(arr[j]>arr[j+1]){tmp = arr[j];arr[j] = arr[j+1];arr[j+1] = tmp;}}}return arr;},//快速排序 quickSort: function(arr){var low=0, high=arr.length-1;sort(low,high);function sort(low, high){if(low<high){var mid = (function(low, high){var tmp = arr[low];while(low<high){while(low<high&&arr[high]>=tmp){high--;}arr[low] = arr[high];while(low<high&&arr[low]<=tmp){low++;}arr[high] = arr[low];}arr[low] = tmp;return low;})(low, high);sort(low, mid-1);sort(mid+1,high);}}return arr;},//插入排序 insertSort: function(arr){var len = arr.length;for(var i=1;i<len;i++){var tmp = arr[i];for(var j=i-1;j>=0;j--){if(tmp<arr[j]){arr[j+1] = arr[j];}else{arr[j+1] = tmp;break;}}}return arr;},//希爾排序 shellSort: function(arr){console.log(arr);var h = 1;while(h<=arr.length/3){h = h*3+1; //O(n^(3/2))by Knuth,1973 }for( ;h>=1;h=Math.floor(h/3)){for(var k=0;k<h;k++){for(var i=h+k;i<arr.length;i+=h){for(var j=i;j>=h&&arr[j]<arr[j-h];j-=h){var tmp = arr[j];arr[j] = arr[j-h];arr[j-h] = tmp;}}}}return arr;},printArray:function (arr){var str="[";for(var x=0;x<arr.length;x++){if(x!=arr.length-1){str+=arr[x]+",";}else{str+=arr[x]+"]";}}//alert(str);return str;},show:function(arr){for(var x=0;x<arr.length;x++){for(var y=x+1;y<arr.length;y++){if(arr[x]>arr[y]){var temp=arr[x];arr[x]=arr[y];arr[y]=temp;}}} } }
?
轉(zhuǎn)載于:https://www.cnblogs.com/weishao-lsv/p/8145467.html
總結(jié)
以上是生活随笔為你收集整理的javascript数组排序和prototype详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: “一日肠九回”下一句是什么
- 下一篇: 求一个好听的牧师名字