2020京东秋招笔试编程(姓名排序)

题目描述:

立刻就要开学啦,教务处的老师拿到新生名单,如今他须要根据考生的姓名录入一个拼音版的新名单。老师录入的时候,须要输入姓和名(例如:ZHANG SAN字母均为大写,姓名以空格隔开),而且要将这些人按必定规则排序。
排序的方式以下:
首先,按照该姓出现的次数排序,即:姓出现次数多的人先排序;
其次,若两我的的姓出现的次数同样多(或者是同一个姓),按照原名单的顺序。数组

输入

输入包括多行,每一行两个字符串,表明一我的的姓和名。code

输出

输出排序后的名单。排序

样例输入

ZHANG SAN
LI SI
WANG WU
WANG LIU
WANG QI
ZHANG WU
LI WU字符串

样例输出

WANG WU
WANG LIU
WANG QI
ZHANG SAN
LI SI
ZHANG WU
LI WUio

代码部分

var array = ['ZHANG SAN', 'LI SI', 'WANG WU', 'WANG LIU', 'WANG QI', 'ZHANG WU', 'LI WU'];

function sort(array) {
  //提取姓氏数组xingArray
  var xingArray = [];
  for (var i = 0; i < array.length; i++) {
    var xingindex = array[i].indexOf(' ');
    xingArray.push(array[i].slice(0, xingindex));
  }

  //获得删除姓氏数组中重复项的数组(简化姓氏数组simpleArr)
  var simpleArr = [];
  for (var i = 0; i < xingArray.length; i++) {
    if (simpleArr.indexOf(xingArray[i]) == -1) {
      simpleArr.push(xingArray[i]);
    }
  }
  // console.log(simpleArr);

  //统计姓名数组中各个姓氏出现的次数
  var countArray = [];
  for(var i = 0; i < simpleArr.length; i++) {
    var num = 0;
    for(var j = 0; j < array.length; j++) {
      if(simpleArr[i] == array[j].slice(0, array[j].indexOf(' '))) {
        num++;
      }
    }
    countArray.push(num);
  }
  // console.log(countArray);


  //计算姓氏出现次数中的最大项
  var maxCount = 0;
  for (var i = 0; i < countArray.length; i++) {
    if (countArray[i] > maxCount) {
      maxCount = countArray[i];
    }
  }


  //将出现同一次数的姓氏归并到一个数组,造成一个二维数组
  var sortXing = [];
  
  while(maxCount) {
    var xingteam = [];
    for(var i = 0; i < countArray.length; i++) { 
      if(countArray[i] == maxCount) {
        xingteam.push(simpleArr[i]);
      }
    }
    sortXing.push(xingteam);
    maxCount--;
  }
  // console.log(sortXing);

  //对姓名进行排序
  var sortName = [];
  for(var i= 0; i < sortXing.length; i++) {
    for(var j = 0; j < array.length; j++) {
      for(var k = 0; k < sortXing[i].length; k++) {
        if(sortXing[i][k] == array[j].slice(0, array[j].indexOf(' '))) {
          sortName.push(array[j]);
        }
      } 
    }
  }

  console.log(sortName);
}

sort(array);
相关文章
相关标签/搜索