/* *author:eric,百度星知魂 *email:shmilyhe@163.com *转载请注明出处 */ Object.prototype.toString=function(){ return 'i am an object!'; } //-------------------name space-------------------------// ERIC={ version:'v1.0', Sort:{}, deBug:true, log:function(log){ if(this.deBug==true)document.write('log->'+log+'<br/>'); } } //-----------------Sort----------------------------// ERIC.Sort.bubbleSort=function (array){//冒泡排序bubble sort ERIC.log('现在开始冒泡排序'); ERIC.log('<hr>'); var count_change=0; var count_itorate=0; for(var i=array.length-1;i>0;i--){ ERIC.log('第'+(array.length-i)+'次冒泡'); var flag=i; for(var j=0;j<i;j++){ count_itorate++; if(array[j]>array[j+1]){ var temp=array[j]; array[j]=array[j+1]; array[j+1]=temp; flag++; count_change++; } } ERIC.log(array); if((i-flag)==0)break; } ERIC.log('冒泡排序结束'); ERIC.log('一共循环了'+count_itorate+'次'); ERIC.log('一共交换了'+count_change+'次'); ERIC.log('<hr>'); return array; } //------------------SelectSort----------------// ERIC.Sort.selectSort=function (array){//select srort ERIC.log('选择排序开始'); ERIC.log('<hr>'); var count_change=0; var count_itorate=0; for(var i=0;i<array.length;i++){ var theMinIndex=i; for(var j=i;j<array.length;j++){ count_itorate++; if(array[theMinIndex]>array[j]){ theMinIndex=j; } } if(theMinIndex!=i){ var tempValue=array[i]; array[i]=array[theMinIndex]; array[theMinIndex]=tempValue; count_change++; } ERIC.log('第'+(i+1)+'次排序'); ERIC.log(array); } ERIC.log('选择排序结束'); ERIC.log('一共循环了'+count_itorate+'次'); ERIC.log('一共交换了'+count_change+'次'); ERIC.log('<hr>'); return array; } //-----------------------------Map----------------------------// ERIC.Map=function(n){ this.name=n; this.head=null; this.end=null; this.curr=null; this.size=0; } ERIC.Map.prototype.add=function(k,v){ var tem={ob:v,next:null,key:k}; if(this.head){ var f=this.head; if(f.key==k){f.ob=v;return;} for(;f.next;){ f=f.next; if(f.key==k){f.ob=v;return;} } this.end.next=tem; this.end=tem; }else{ this.head=tem; this.end=tem; this.curr=tem; } this.size++; } ERIC.Map.prototype.del=function(k){ var n=this.head; if(k==n.key){this.head=n.next;this.curr=n.next; return;} for(;n.next!=null;){ if(n.next.key==k){ n.next=n.next.next?n.next.next:null; this.size--; break; } n=n.next; } } ERIC.Map.prototype.next=function(){ var te=null; if(this.curr){ te=this.curr.ob; this.curr=this.curr.next;} return te; } ERIC.Map.prototype.hasnext=function(){ if(this.curr==null)return false; if(this.curr.ob!=null&&this.curr.ob!=undefined)return true; return false; } ERIC.Map.prototype.reset=function(){ this.curr=this.head; } ERIC.Map.prototype.clear=function(){ this.head=null; this.end=null; this.curr=null; this.size=0; } ERIC.Map.prototype.get=function(k){ var n=this.head; if(n==null){return null;} if(n.key==k){return n.ob;} for(;n.next!=null;){ if(n.next.key==k){ return n.next.ob; } n=n.next; } return null; } ERIC.Map.prototype.getKey=function(){return this.curr.key;} //--------------------------end Map-----------------------------------------// //--------------------list单向琏表--------------------------------------------------// ERIC.List= function(){ this.head=null; this.end=null; this.curr=null; this.size=0; } ERIC.List.prototype.add=function(o){ var tem={ob:o,next:null}; if(this.head){ this.end.next=tem; this.end=tem; }else{ this.head=tem; this.end=tem; this.curr=tem; } this.size++; } ERIC.List.prototype.del=function(inde){ var n=this.head; if(inde==0){this.head=this.head.next;this.curr=this.head;this.size--; return;} for(var i=0;i<inde;i++){ n=n.next; } if(n.next!=null)this.size--; else return; n.next=n.next.next?n.next.next:null; } ERIC.List.prototype.next=function(){ var te=null; if(this.curr){ te=this.curr.ob; this.curr=this.curr.next;} return te; } ERIC.List.prototype.hasnext=function(){ if(this.curr==null)return false; if(this.curr.ob!=null&&this.curr.ob!=undefined)return true; return false; } ERIC.List.prototype.reset=function(){ this.curr=this.head; } ERIC.List.prototype.clear=function(){ this.head=null; this.end=null; this.curr=null; } //-----------------test case----------------------------------------------// var map=new ERIC.Map('eric'); map.add('eric',124); ERIC.log(map.get('eric')); var list=new ERIC.List(); for(var i=0;i<20;i++){ list.add(i); } for(;list.hasnext();){ ERIC.log(list.next()); } var test_array=[1,4,2,7,5,9,4,5,3]; ERIC.Sort.bubbleSort(test_array); ERIC.Sort.selectSort(test_array);