冒泡排序数组去重判断每个值在数组中出现的次数。。

Posted 圣墨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了冒泡排序数组去重判断每个值在数组中出现的次数。。相关的知识,希望对你有一定的参考价值。

莫愁前路无知己,天下谁人不识君--- 唐.高适《别董大二首》

本文的数组排序,数组去重,判断出现的次数,都不使用数组的方法。

具体的流程思想在代码注释中

一、冒泡排序

//冒泡排序:
    var arr = [1,2,3,5,4];
    var j,temp,flag;
    var count = 0;//用于记录比较的轮数
    //外层循环控制比较的趟数
    //使用假设成立法:(使用变量标记的方式)
    //1 找到程序中不确定的操作,设置假设条件
    //2 对假设条件进行验证(设置一个可以使假设失败的条件)
    //3 对假设条件的最终值进行检测,设置操作
    for(var i = 0;i < arr.length - 1; i++){
      count++;
      flag true;//假设本轮执行排序后可以跳出
      for(j = 0; j < arr.length - 1 - i; j++){
        if(arr[j] > arr[j+1]){
          temp = arr[j];
          arr[j] = arr[j+1];
          arr[j+1] = temp;
          //只要进入到if中,说明排序可能没有完毕,设置假设条件为false
          //阻止跳出
          flag = false;
        }
      }
        if(flag){
        break;
      }
    }
    console.log(arr,count);

一、数组去重

//数组去重:
    var arr = [5,1,2,1,2,2,1,2,1,2,3,4,3,4,5,3,4,5,4,3,2,1];
    //希望得到的结果为[1,2,3,4,5]
    //console.log(resultArr);//[1,2,3,4,5]
    //1 创建一个结果数组
    var resultArr = [arr[0]];
    var flag;
    //2 遍历数组
    for(var i = 1; i < arr.length; i++){
      // 正确的实现方式
      flag = true;//假设当前arr[i]可以放入到resultArr中
      for(j = 0; j < resultArr.length; j++){
        //设置可以让假设失败的条件:如果偶遇任何一个元素相等,即说明不能放入
        if(arr[i] === resultArr[j]){
          flag false;
       }
      }
      //根据flag的值设置最终操作
      if(flag){
        resultArr.push(arr[i]);
      }
    }
    console.log(resultArr);

简单介绍一下Set:Set是ES6中新的对象,数组去重特别方便。只需要两行代码

//先定义一个重复的数组
var
arr = [1,1,2,2,2,3,3,4,4] var set = new Set(arr) // {1,2,3,4} var newArr = Array.from(set) // 再将set转变成array console.log(newArr) // [1,2,3,4]

实现的原理:SetArray的区别在于:Array中允许出现重复的元素,例如[1,2,2,3];而Set中的所有元素都是唯一的,只能是{1,2,3}。利用这一特性,我们就可以迅速地去掉数组中重复的元素。

 

三、出现的次数

第一种方法
第一种:

/*
 var arr = [5,1,2,1,2,2,1,2,1,2,3,2,2,1,2,1,2,3,2,2,1,2,1,2,3,2,2,1,2,1,2,3,2,2,1,2,1,2,3,2,2,1,2,1,2,3,2,2,1,2,1,2,3,2,2,1,2,1,2,3,4,5,3,4,5,4,3,2,1];     //想知道数组arr中的1出现的次数是几次?     var count = 0;     for (var i = 0; i < arr.length; i++) {       if(arr[i] === 1){         count++;       }     }*/     //希望检测的数据有五个,得到的结果的个数也是五个     var countArr = [],count;     //取出每个要进行计数的数据arr[i]     for (i = 0; i < resultArr.length; i++) {       count 0;//对arr[i]的计数进行初始化       //使用resultArr[i]与原数组arr中的每个元素比较计数       for(j = 0;j<arr.length;j++){         if(resultArr[i] === arr[j]){           count++;         }       }       //将count的值保存到countArr中       countArr.push(count);     }     console.log(countArr);

 

第二种方法

以上是关于冒泡排序数组去重判断每个值在数组中出现的次数。。的主要内容,如果未能解决你的问题,请参考以下文章

华为机试真题 C++ 实现数组去重和排序

华为机试真题 C++ 实现数组去重和排序

华为机试真题 Java 实现数组去重和排序

reduce实现计算数组中每个元素出现的次数 数组去重 将多维数组转化为一维

冒泡排序的交换次数 (树状数组)

数组去重及排序/0~10随机数字/字符串中出现最多的字符及次数