Maison  >  Article  >  interface Web  >  Explication détaillée de la déduplication de tableaux javascript et exemples d'algorithmes de tri rapide

Explication détaillée de la déduplication de tableaux javascript et exemples d'algorithmes de tri rapide

伊谢尔伦
伊谢尔伦original
2017-07-24 09:23:211949parcourir

Déduplication de tableau

Principe : définissez un objet obj, puis utilisez l'élément de tableau comme nom d'attribut d'obj, et utilisez si le nom d'attribut est répété pour déterminer la duplication


var unique = function(arr){
  let obj = {};
  let newArr = [];
  arr.forEach(function(x){
    if(!obj[x]){ //如果对象中没有该元素对应的属性
      obj[x] = true;
      newArr.push(x);
    }
  });
  return newArr;
}

Utilisez l'algorithme de tri rapide pour trier le tableau

Cela inclut deux effets, l'un consiste à utiliser les caractéristiques de tri rapide pour réaliser la déduplication Tri rapide, l'autre est un tri rapide sans suppression de poids.

Principe : obtenez le tableau cible, sélectionnez un élément comme drapeau, parcourez les éléments restants, placez les éléments plus grands que le drapeau à droite et plus petits que le drapeau à gauche.

Remarque particulière : il existe des éléments égaux au bit de drapeau. Si vous stockez des éléments égaux, la déduplication sera réalisée. Si vous les stockez, ils ne seront pas dédupliqués.


var quickSort = function(arr){
  if(arr.length <= 1){
    return arr;
  }
  //定义一个左数组,定义一个右数组
  let leftArr = [];
  let rightArr = [];
  //选定一个参照值
  let tag = arr[0];
  /*
   * 使用如下方式判断,会把重复元素去掉,就实现了快排的同时去重
   */
  for(let i = 0; i < arr.length; i++){
    if(arr[i] < tag){ //将比tag小的元素放在左数组中
      leftArr.push(arr[i]);
    }
    if(arr[i] > tag){ //将比tag大的元素放在右数组中
      rightArr.push(arr[i]);
    }
  }
  /*
   * 使用如下方式就是使用快排进行排序,不去重
   */
  for(let i = 1; i < arr.length; i++){
    if(arr[i] < tag){ //将比tag小的元素放在左数组中
      leftArr.push(arr[i]);
    }else{ //将比tag大的元素放在右数组中
      rightArr.push(arr[i]);
    }
  }
  //递归调用
  return [].concat(quickSort(leftArr),[tag],quickSort(rightArr));
}

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!

Déclaration:
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