数组组合排列及排序

//组合排列let array = [‘1‘,‘2‘,‘3‘]
function getGroup(data, index = 0, group = []) {
  let need_apply = [];
  need_apply.push(data[index]);
  for (var i = 0; i < group.length; i++) {
    need_apply.push(group[i] + ‘ ‘ + data[index]);
  }
  group.push.apply(group, need_apply);
  if (index + 1 >= data.length) return group;
  else return getGroup(data, index + 1, group);
}//排序
let list = getGroup(array).sort((a,b)=>{
  if (a.length < b.length ) {
    return 1
  }
  if (a.length > b.length ) {
    return -1
  }
  return 0
})

原文地址:https://www.cnblogs.com/web-Development/p/12342062.html

时间: 2024-11-10 14:46:09

数组组合排列及排序的相关文章

js多个(N)个数组的的元素组合排序算法,多维数组的排列组合或多个数组之间的排列组合

现在有一批手机,其中颜色有['白色','黑色','金色','粉红色']:内存大小有['16G','32G','64G','128G'],版本有['移动','联通','电信'],要求写一个算法,实现[['白色','16G','移动'], ['白色','16G','联通'] ...]这样的组合,扩张,如果后面还有参数,比如再加一个['国行','港版','美版'],不改程序一样可以执行! 通过上面规律可以发现这个算法就是:一个数组里面包含若干个数组,进行组合 算法代码写法一: // 执行组合排列的函数

PHP数组内容不重复组合排列算法

最近在做ecshop的商品库存模块,分别给一款商品的多个属性组合设置库存,如下图: 一款手机有不同颜色,屏幕尺寸,系统和电量,都要设置不同的库存,如果都要手动选择属性组合,则会耗费很多不必要的时间.假如打开页面时就已经设置好属性排列组合那就最好不过,因此想了整天,写了如下函数: 1 <?php 2 3 /* 4 Author:GaZeon 5 Date:2016-6-20 6 Function:getArrSet 7 Param:$arrs 二维数组 8 getArrSet(array(arra

C++数组排成最大的数(数组,算法,排列)

//把数组排成最大的数(数组.算法). //题目:输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最大的一个. //例如输入数组{32, 321},则输出这两个能排成的最大数字32321.. //或者输入数组{10,9,33,1000}输出这四个能排列的最大数字933101000. #include <iostream> #define MAXSIZE 100 using namespace std; template<typename T> class Gri

C实现数组中元素的排序

使用C实现数组中元素的排序,使得数组中的元素从小到大排列.只不过在这个过程中出了一点小问题,在C中进行数字交换的时候,必须要使用指针的,不能使用引用.在后面的文章中,我要学习一个在C中的引用和指针的区别.下面看一下我的代码吧. #include <stdio.h> void swap(int *a,int *b); void rest(int lels[],int count); /** * 该实例用于实现对用户输入的数组进行排序 * 要求的数组中的元素从小到大来咧 * * @brief ma

数组组合

理论: 將一組數字.字母或符號進行排列,以得到不同的組合順序,例如1 2 3這三個數的排列組合有:1 2 3.1 3 2.2 1 3.2 3 1.3 1 2.3 2 1. java实现: package 经典; import java.lang.reflect.Array; import java.util.Arrays; import java.util.LinkedList; import java.util.List; public class 数组组合1 { public 数组组合1()

递归求解几类排列组合问题(二、全组合排列)

对于搜索的深度很深或深度不固定的情况,则无法用枚举的方法来设置循环嵌套的层数,这时可以考虑用递归法来完成搜索任务.递归是一种常用算法,它是搜索的另一种实现方式.如果在算法设计中采用一个函数或过程直接或间接地调用它自身来解决问题的方法,则称该方法为递归算法.递归算法必须要设计好一个或若干个确定的递归终止条件. Sample Input 3 1 2 3 Sample Output 123 132 213 231 312 321 #include<stdio.h> #include<strin

递归求解几类排列组合问题(四、普通选择性组合排列)

四.普通选择性组合排列 对于搜索的深度很深或深度不固定的情况,则无法用枚举的方法来设置循环嵌套的层数,这时可以考虑用递归法来完成搜索任务.递归是一种常用算法,它是搜索的另一种实现方式.如果在算法设计中采用一个函数或过程直接或间接地调用它自身来解决问题的方法,则称该方法为递归算法.递归算法必须要设计好一个或若干个确定的递归终止条件. Sample Input 5 3 1 2 3 4 5 Sample Output 123 124 125 134 135 145 234 235 245 345 #i

UVA 156 Ananagrams 关于二维数组表示的字符串排序的问题

题目链接:UVA 156 Ananagrams  Ananagrams  Most crossword puzzle fans are used to anagrams--groups of words with the same letters in different orders--for example OPTS, SPOT, STOP, POTS and POST. Some words however do not have this attribute, no matter how

Javascript数组系列四之数组的转换与排序Sort方法

今天我们继续来介绍 Javascirpt 数组中的方法,也是数组系列的第四篇文章,因为数组的方法众多,每篇文章我们都对数组的每个方法都有比较细致的描述,只要你能够从中成长一点点,那我们的目的就达到了,学习是一个持续的,渐进的过程.每天进步一点点,最终会有大成就. 直接进入主题 数组的转换 我们在项目的开发过程中,数据类型之间的转换有着非常重要的作用,而数组转换成其他数据类型是我们常见的一种. toString 该方法是对数组转换成字符串,数组的每一个元素都会调用 「toString」方法 ,返回