導航:首頁 > 源碼編譯 > js排列組合演算法

js排列組合演算法

發布時間:2022-05-22 12:56:38

⑴ 排列組合的公式

排列組合計算公式如下:

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);
}

閱讀全文

與js排列組合演算法相關的資料

熱點內容
南京解壓車要帶什麼 瀏覽:562
天堂2編譯視頻教程 瀏覽:392
伺服器沒有進程怎麼辦 瀏覽:784
阿里雲發布新物種神龍雲伺服器 瀏覽:59
數據結構遞歸演算法統計二叉樹節點 瀏覽:666
ev3怎麼編程 瀏覽:702
gzip壓縮教程 瀏覽:349
解壓模擬例子 瀏覽:984
流媒體伺服器如何實現視頻轉發 瀏覽:57
linux字元串md5 瀏覽:302
支撐突破選股源碼怎麼設置 瀏覽:934
湖南戴爾伺服器維修雲主機 瀏覽:494
解壓到文件夾的視頻都自動隱藏了 瀏覽:569
閱讀器支持php 瀏覽:222
人生需求怎麼解壓 瀏覽:795
pdf列印機找不到 瀏覽:1001
如何同時使用兩個apache伺服器 瀏覽:723
國外php論壇 瀏覽:966
災難是命令 瀏覽:604
linux火狐瀏覽器安裝 瀏覽:71