记一次小算法--字符串按出现的次数排序
// 需求:一串字符串,例如:`1,2,3,4,5,6,6,7,8,8,9,8,6,6,5,5,4,4,4,4,3,3,1`
// 按出现次数排序
function sortByCount(str) {
// 1、字符串转数组
let strToArr = str.split(`,`);
// 2、定义两个空的数组
let arr1 = [];
let arr2 = [];
// 3、循环遍历
strToArr.forEach(val => {
// indexOf()找到数组的第一个索引,找不到就是-1
let flag = arr1.indexOf(val);
console.log(flag);
if (flag < 0) {
arr1.push(val);
arr2.push(1);
} else {
arr2[flag]++;
}
});
let arrTmp = arr1.slice();
arr1.sort((a, b) => {
let flaga = arrTmp.indexOf(a);
let flagb = arrTmp.indexOf(b);
return arr2[flagb] - arr2[flaga];
});
return arr1.toString();
}
const res = sortByCount(`1,1,2,2,3,3,3,4`);
// 打印输出结果
console.log(res); 相关推荐
lixiaotao 2020-10-07
美丽的泡沫 2020-09-08
nongfusanquan0 2020-08-18
hang0 2020-08-16
earthhouge 2020-08-15
算法改变人生 2020-07-28
troysps 2020-07-19
Broadview 2020-07-19
chenfei0 2020-07-18
风吹夏天 2020-07-07
yangjingdong00 2020-07-05
数据与算法之美 2020-07-05
shawsun 2020-07-04
数据与算法之美 2020-07-04
要知道时间复杂度只是描述一个增长趋势,复杂度为O的排序算法执行时间不一定比复杂度为O长,因为在计算O时省略了系数、常数、低阶。实际上,在对小规模数据进行排序时,n2的值实际比 knlogn+c还要小。
Evankaka 2020-07-04
田有朋 2020-06-28