使用JavaScript实现:数组去重、冒泡排序、快速排序、查找字符串中出现最多的字母

//数组去重
        Array.prototype.unique1=function(){
            var arr2 = [];
            for (var i=0;i<arr2.length;i++) {
                if (arr2.indexOf(this[i] == -1)) {
                    arr2.push(this[i]);
                }
            }
            return arr2;
        }
        var array1=[1,2,3,4,5,6,5,4,3,2,1];
        alert(array1.unique1());
        
        
//冒泡排序
        var time=0;
        var bubbleSort =function(arr){
            for (var i=0;i<arr.length-1;i++) {
                for (var j=i+1;j<arr.length;j++) {
                    if (arr[i]>arr[j]) {
                        var temp = arr[i];
                        arr[i]=arr[j];
                        arr[j]=temp;
                    }
                    //console.log("第"+(++time)+"次排序后:"+arr);
                }
            }
            return arr;
        }
        var arr1=[1,2,3,4,5,6,5,4,3,2,1]
        console.log("最终结果为:"+bubbleSort(arr1));
        
 //快速排序
        var times=0;  
        var quickSort=function(arr){   
            //如果数组长度小于等于1无需判断直接返回即可  
            if(arr.length<=1){  
                return arr;  
            }  
            var midIndex=Math.floor(arr.length/2);//取基准点  
            var midIndexVal=arr.splice(midIndex,1);//取基准点的值,splice(index,1)函数可以返回数组中被删除的那个数arr[index+1]  
            var left=[];//存放比基准点小的数组  
            var right=[];//存放比基准点大的数组  
            //遍历数组,进行判断分配  
            for(var i=0;i<arr.length;i++){  
                if(arr[i]<midIndexVal){  
                    left.push(arr[i]);//比基准点小的放在左边数组  
                }  
                else{  
                    right.push(arr[i]);//比基准点大的放在右边数组  
                }  
                //console.log("第"+(++times)+"次排序后:"+arr);  
            }  
            //递归执行以上操作,对左右两个数组进行操作,直到数组长度为<=1;  
            return quickSort(left).concat(midIndexVal,quickSort(right));  
        };  
        console.log(quickSort(arr1));  
     

   
 //查找字符串中出现最多的字母
        var str="zhaochucichuzuiduodezifu";
        var o={};
        //遍历str,统计每个字符出现的次数
        for(var i=0;i<str.length;i++){
            //当前第i个字符
            var char = str.charAt(i);
            //char就是对象o的一个属性,o[char]是属性值,存储出现的次数
            if (o[char]) {//如果o[char]属性存在,属性值+1
                o[char]++; //次数+1
            } else{            //char属性不存在为1(即字符第一次出现)
                o[char]=1; //若第一次出现,次数记为1
            }
        }
        //输出的是完整的对象,记录着每一个字符及其出现的次数
        //输出{a:1, c:3, d:2, e:1, f:1, h:3, i:3, o:2, u:5, z:3}
        console.log(o);
        
      //遍历对象,找到出现次数最多的字符和次数
        var max=0;//存储出现次数最多的次数
        var maxchar=null;//存储出现次数最多的字符
        for (var key in o) {
            if (max < o[key]) {
                max = o[key];//max始终储存次数最大的那个
                maxchar = key;//那么对应的字符就是当前的key
            }
        }
        console.log("最多的字符是" + maxchar);
           console.log("出现的次数是" + max);
       
阅读更多
文章标签: javas
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭