⑴ 排列组合的公式
排列组合计算公式如下:
1、从n个不同元素中取出m(m≤n)个元素的所有排列的个数,叫做从n个不同元素中取出m个元素的排列数,用符号 A(n,m)表示。
排列就是指从给定个数的元素中取出指定个数的元素进行排序。组合则是指从给定个数的元素中仅仅取出指定个数的元素,不考虑排序。
排列组合的中心问题是研究给定要求的排列和组合可能出现的情况总数。 排列组合与古典概率论关系密切。
(1)js排列组合算法扩展阅读
排列组合的发展历程:
根据组合学研究与发展的现状,它可以分为如下五个分支:经典组合学、组合设计、组合序、图与超图和组合多面形与最优化。
由于组合学所涉及的范围触及到几乎所有数学分支,也许和数学本身一样不大可能建立一种统一的理论。
然而,如何在上述的五个分支的基础上建立一些统一的理论,或者从组合学中独立出来形成数学的一些新分支将是对21世纪数学家们提出的一个新的挑战。
⑵ JS,排列,组合,实现方法
var arr = new Array(0,1,2,3,4,5,6,7,8,9); // 0-9 的数
var tempArr = new Array(3); // 取出的任意三个数
var count = 0; // 组合的个数
var resultStr = ""; // 最后打印出的结果
// 取到任意三个数
for(var i = 0; i < 3; i++){
tempArr[i] = arr[Math.floor(Math.random()*10)];
}
// 排列组合
for(var i = 0; i < 3; i++){
for(var j = 0; j < 3; j++){
for(var k = 0; k < 3; k++){
count++;
resultStr += tempArr[i] + "," + tempArr[j] + "," + tempArr[k] + ";\n";
}
}
}
alert(resultStr);
你试一下,上面这段,是你想要的不?
这可是我一个字一个字敲出来的啊! 呵呵
⑶ js jq M个数组选N个进行排列组合,怎么写
这个主要考量的是计算的问题,主要就是理解排列和组合的公式。
在这里,我们只需要计算元素的个数,就可以使用公式获取到排列组合数,但如果要获取排列组合的具体集合,就需要遍历,也就是我们经常使用的for循环,通过循环,每个数组去一个元素。就构成了组合。
⑷ js两个数组排列组合
<html>
<head>
<title>js两个数组排列组合</title>
<scripttype="text/javascript">
vara=["A","B","C"];
varb=["1","2","3"];
window.onload=function(){
vara1=newobjPL(a);//计算数组a的排列组合
varb1=newobjPL(b);//计算数组b的排列组合
varstr="";
varn=0;
//a1和b1的排列组合个数就是两者相乘(双层循环)
for(vari=0;i<a1.length;i++){
for(varj=0;j<b1.length;j++){
str+=a1[i]+b1[j]+"";
n++;
}
str+="<br/>";
}
document.write("共"+n+"个<br/>");
document.write(str);
}
//取数组的排列组合
functionobjPL(arr){
this.a=arr;
this.r=[];
this.n=0;
//从M个数里面取N个(递归)
this.mGetN=function(curIndex,num,curSelect){
if(num==0){
this.r[this.n++]=curSelect;return;
}
if(this.a.length-curIndex<num)return;
this.mGetN(curIndex+1,num-1,curSelect+this.a[curIndex]);
this.mGetN(curIndex+1,num,curSelect);
}
for(vari=1;i<=this.a.length;i++){
this.mGetN(0,i,"");
}
returnthis.r;
}
</script>
</head>
<body></body>
</html>
["A","B","C"]与["1","2","3"]组合的结果:
⑸ js实现算法:几组数据的组合问题
vardata=[["A","B","C"],["D","E"],[1,2]];
functioncombine(arr){
if(arr.length>1){
varlen1=arr[0].length,len2=arr[1].length,newArr=arr.slice(0),temp=[];
for(vari=0;i<len1;i++){
for(varj=0;j<len2;j++){
temp.push(arr[0][i]+arr[1][j])
}
}
newArr.splice(0,2,temp);
returnarguments.callee(newArr)
}
returnarr[0]
}
console.log(combine(data))
⑹ js中数组排序的方法
//排序算法
window.onload=function(){
vararray=[0,1,2,44,4,
324,5,65,6,6,
34,4,5,6,2,
43,5,6,62,43,
5,1,4,51,56,
76,7,7,2,1,
45,4,6,7,8];
//vararray=[4,2,5,1,0,3];
array=sorting.shellSort(array);
alert(array);
}
varsorting={
//利用sort方法进行排序
systemSort:function(arr){
returnarr.sort(function(a,b){
returna-b;
});
},
//冒泡排序
bubbleSort:function(arr){
varlen=arr.length,tmp;
for(vari=0;i<len-1;i++){
for(varj=0;j<len-1-i;j++){
if(arr[j]>arr[j+1]){
tmp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
}
}
}
returnarr;
},
//快速排序
quickSort:function(arr){
varlow=0,high=arr.length-1;
sort(low,high);
functionsort(low,high){
if(low<high){
varmid=(function(low,high){
vartmp=arr[low];
while(low<high){
while(low<high&&arr[high]>=tmp){
high--;
}
arr[low]=arr[high];
while(low<high&&arr[low]<=tmp){
low++;
}
arr[high]=arr[low];
}
arr[low]=tmp;
returnlow;
})(low,high);
sort(low,mid-1);
sort(mid+1,high);
}
}
returnarr;
},
//插入排序
insertSort:function(arr){
varlen=arr.length;
for(vari=1;i<len;i++){
vartmp=arr[i];
for(varj=i-1;j>=0;j--){
if(tmp<arr[j]){
arr[j+1]=arr[j];
}else{
arr[j+1]=tmp;
break;
}
}
}
returnarr;
},
//希尔排序
shellSort:function(arr){
console.log(arr);
varh=1;
while(h<=arr.length/3){
h=h*3+1;//O(n^(3/2))byKnuth,1973
}
for(;h>=1;h=Math.floor(h/3)){
for(vark=0;k<h;k++){
for(vari=h+k;i<arr.length;i+=h){
for(varj=i;j>=h&&arr[j]<arr[j-h];j-=h){
vartmp=arr[j];
arr[j]=arr[j-h];
arr[j-h]=tmp;
}
}
}
}
returnarr;
}
}
⑺ js如何将多个数组实现排列组合
<html><head> <title>js两个数组排列组合</title> <script type="text/javascript"> var a = ["A","B","C"]; var b = ["1", "2","3"]; window.onload = function () { var a1 = new objPL(a);//计算数组a的排列组合 var b1 = new objPL(b);//计算数组b的排列组合 var str = ""; var n = 0; //a1和b1的排列组合个数就是两者相乘(双层循环) for (var i = 0; i < a1.length; i++) { for (var j = 0; j < b1.length; j++) { str += a1[i] + b1[j] + " "; n++; } str += "<br/>"; } document.write("共" + n + "个<br/>"); document.write(str); } //取数组的排列组合 function objPL(arr) { this.a = arr; this.r = []; this.n = 0; //从M个数里面取N个(递归) this.mGetN = function (curIndex, num, curSelect) { if (num == 0) { this.r[this.n++] = curSelect; return; } if (this.a.length - curIndex < num) return; this.mGetN(curIndex + 1, num - 1, curSelect + this.a[curIndex]); this.mGetN(curIndex + 1, num, curSelect); } for (var i = 1; i <= this.a.length; i++) { this.mGetN(0, i, ""); } return this.r; } </script></head><body></body></html>
["A","B","C"]与["1","2","3"]组合的结果:
⑻ js 数排列组合
表达能力有问题不怪你!~
⑼ js如何排列组合
publicstaticvoidmain(String[]args){
List<String>list=newArrayList<String>();
f(list,newString[]{"A","B"},3);
System.out.println(list);
}
publicstaticvoidf(List<String>pre,String[]arr,intdepth){
depth--;
if(pre.size()>0){
List<String>next=newArrayList<String>();
for(intj=0;j<arr.length;j++){
for(Stringstr:pre){
//排查全部是同一个字符的
if(depth==0&&str.matches(arr[j]+"{"+str.length()+"}")){
continue;
}
next.add(str+arr[j]);
}
}
pre.clear();
pre.addAll(next);
}else{
for(intj=0;j<arr.length;j++){
pre.add(arr[j]);
}
}
if(depth>0)
f(pre,arr,depth);
}