首页 > javascript数组排序和prototype详解

javascript数组排序和prototype详解

原型的概念::原型对象里的所有属性和方法 被所有构造函数实例化出来的对象所共享,类似于java中的 static

正因为共享所以单一的操作 就会影响了全局,因此使用时需注意

 

基于prototype:为数组扩展方法

//获取数组最大值

function getMax(){var max
=this[0];for(var i=0;i<this.length;i++){if(max<this[i]){max=this[i];}}return max; }

//获取数组最小值 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;

 

 

作者曾经在js开发时候经常用到数组的排序,以下是作者对数组排序的总结以及其他方法的扩展

var Array={};
Array.sorting = {//利用sort方法进行排序
    systemSort: function(arr){return arr.sort();},//冒泡排序
    bubbleSort: function(arr){var len=arr.length, tmp;for(var i=0;i){for(var j=0;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=tmp){high--;}arr[low] = arr[high];while(lowtmp){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){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){for(var i=h+k;ih){for(var j=i;j>=h&&arr[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){if(x!=arr.length-1){str+=arr[x]+",";}else{str+=arr[x]+"]";}}//alert(str);return str;},show:function(arr){for(var x=0;x){for(var y=x+1;y){if(arr[x]>arr[y]){var temp=arr[x];arr[x]=arr[y];arr[y]=temp;}}}    }
}

 

转载于:https://www.cnblogs.com/weishao-lsv/p/8145467.html

更多相关:

  • 题目:最小的k个数 入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。 示例 1: 输入:arr = [3,2,1], k = 2 输出:[1,2] 或者 [2,1] 示例 2: 输入:arr = [0,1,2,1], k = 1 输出:[0...

  • //自定义深度复制对象or数组的递归方法---------------------------------------- let copyObjOrArr = o => {let isArray = o instanceof Array;let isObject = o instanceof Object;if (!isObject)...

  • var array = {/* 数组求和*/sum: arr => eval(arr.join("+")),/* 判断一个数组(支持一个字符串)里面的是否有任何一个元素被包含在了某个字符串里面 */isStringContain(str, arr) {Array.isArray(arr) || (arr = [arr]);for (v...

  • 经过调研发现,对任意无序整数数组,快速排序有两种实现方法,这里简单阐述下思路: 思路一:随意选择一个基准元,一般选择数组的起始元或末尾元,Weiss这本书上特意搞了个算法来选择基准元,……,总之就是基准元的选择要尽量随机。选定基准元之后,比如选择数组起始元为基准元,从数组右边开始,向左边遍历,遇到比基准元大的跳过,直至遇到比基准元小...

  • 下面给出这段时间我苦心研究验证过的十种经典排序算法的C语言版本,即下面的排序算法: 插入排序,shell排序,冒泡排序,快速排序,选择排序,堆排序,归并排序,桶排序,基数排序和计数排序。整理出来以作备忘,不足之处,欢迎大家批评指正!其中计数排序分别给出了不稳定和稳定两种排序算法,测试时,使用随机生成大数组和随机手动输入的方法来测试。...

  • //获取某一个cookie的值 const getCookie = key => {var k = key, dc = document.cookie;if (dc.length > 0) {var s = dc.indexOf(k + "=");if (s != -1) {s = s + k.length + 1;var e = d...

  • var SGheadMapPoints = {/*obj={ maxLng: minLng: maxLat: minLat: maxCount:最大人数 minCount:最小人数 total:点位数量 }*/get: function (obj) {var arr = [];obj.maxCount || (obj.maxCount...

  • //自动搜索指定的请柬 var alertTipText = "请柬找到了,就在这个网页里面,自己仔细看吧"; var delay = 1 * 1000;//1秒后循环下一页寻找 /*获取子DOM元素在父元素里面的索引位置(是第几个元素)*/ function getNodeListIndex(childNode) {return c...

  •  获取天气情况(不支持跨域) /*json原生获取*/ function getJSON() {var XML;var url = "http://wthrcdn.etouch.cn/weather_mini?city=杭州";if (window.XMLHttpRequest) {XML = new XMLHttpRequest(...

  • 割点:去掉某点x,该无向图分割成两部分(及以上) 割边:去掉某条边x,该无向图分割成两部分(及以上) 时间戳:在搜索树上的遍历序号dfn 追溯值:subtree子树和非搜索树上可达的最小点 割边和割点判定 1 void tarjan(int x, int in_edge) { 2 dfn[x] = low[x] = ++...