Maison > interface Web > js tutoriel > Comment implémenter le tri par comptage en js

Comment implémenter le tri par comptage en js

王林
Libérer: 2020-04-01 09:17:59
avant
2937 Les gens l'ont consulté

Comment implémenter le tri par comptage en js

Cet article présente la méthode d'implémentation du tri par comptage dans js (version mise à niveau)

Tri par comptage original, le volume du seau doit être celui qui peut contenir tout occurrences possibles de la valeur minimale au nombre de valeur maximale. Ici, nous pouvons remplacer le compartiment par un objet, en profitant du tri automatique des objets et de l'impossibilité d'avoir des paires clé-valeur avec le même nom d'attribut. Nous n'avons pas besoin d'un compartiment de volume ordonné et pouvons simplement ajouter des paires clé-valeur. à volonté. Le code est le suivant

var ary=[23,14,12,24,53,31,53,35,46,12,62,23]
Copier après la connexion

L'exemple de code est le suivant :

function countSort(arr){
  let obj={};
  //遍历原数组,给对象新增键值对,如果已经存在就对应的属性值++,如果不存在则新增键值对
  for(let i=0;i<arr.length;i++){
    if(!obj[arr[i]]){
      obj[arr[i]]=1;
    }else{
      obj[arr[i]]++;
    } 
    }
  let index=0;
  //遍历对象属性名,按顺序放回覆盖原数组
  for(let key in obj){
    while(obj[key]>0){
      arr[index]=Number(key);
      obj[key]--;
      index++
    }
  }
  return arr;
}
 
console.log(countSort(ary));
Copier après la connexion

Tutoriels associés recommandés : tutoriel js

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:jb51.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal