【转】JAVA实现排列组合算法

转载 2007年10月02日 15:18:00

在网上看到的,下保存先来,有时间再看~

 

public class testsort...{
  String[] list;
  StringBuffer sb;
  
int len,start;
  testsort(String 
in)...{
    len 
= Integer.parseInt(in);
    list 
= new String[len];
    
for(int i=0;i       list[i] = String.valueOf(i+1);
    printList();
  }

  
void replaceStr(int c1,int c2)...{
    String temp 
= list[c1];
    list[c1] 
= list[c2];
    list[c2] 
= temp;
  }

  
void printList()...{
    
if(start==len-1)...{
      sb 
= new StringBuffer();
      
for(int i=0;i         sb.append(list[i]);
      sb.append(
" ");
      System.
out.print(sb);
    }
else...{
      
for(int i=start;i         replaceStr(start++,i);
        
        printList();
        replaceStr(i,
--start);
       
// System.out.println(--start);
       
// System.out.println(start);
      }

    }

  }

  
public static void main(String args[])...{
    
new testsort(args[0]);
  }

}

 

//**************************

下面我收集的关于排列的一些算法。有些我也具体不懂。以前没有好好学数据结构。先收集起来。慢慢研究也希望有高人来咱讲讲。

1.n个数的全排列
#i nclude <stdio.h>
const int N = 5;
int a[N] = {1,2,3,4,5};
void swap(int &a,int &b)
{
  int t ;
  t = a;
  a = b;
  b = t;
}
void permutation(int m,int n)
{
  int i;
  if(m==n)
  {
     for(i = 0;i<=n;i++)
     {
       printf("%d ",a[i]);
     }
     printf("/n");
  }
  for(i = m;i<=n;i++)
  {
    swap(a[i],a[m]);
    permutation(m+1,n);
    swap(a[i],a[m]);
  }
}
int main()
{
  permutation(0,4);
}


2.n取r的排列
#i nclude <stdio.h>
const int N = 5;
int a[N] = {1,2,3,4,5};
int b[N];
int r = 3;
char used[N];
void perm(int pos)
{
  int i;
  if(pos==r)
  {
    for(i = 0;i<r;i++)
     {
       printf("%d ",b[i]);
     }
    printf("/n");
  }
  for(i = 0;i<N;i++)
  {
     if(!used[i])
     {
        b[pos] = a[i];
        used[i]++;
        perm(pos+1);
        used[i]--;
     }
    
  }      
}
int main()
{
  perm(0);
}
3.n取r的组合
#i nclude <stdio.h>
const int N = 9;
int a[N] = {1,2,3,4,5,6,7,8,9};
int b[N];
int r = 4;
char used[N];
int count;
void combine(int pos)
{
  int i;
  if(pos==r)
  {
     for(i = 0;i<r;i++)
     {
       printf("%d ",a[b[i]]);
     }
    printf("/n");
    count++;
    return;
  }
  //这里是关键,第i个位置上的数,只能是从排在第i位的数开始的N-r个中的一个,后面的数一定要比前面的大
  for(i = (pos>0?(b[pos-1]+1):pos);i<=pos+N-r;i++)  
  {
    if(!used[i])
    {
      b[pos] = i;
      used[i]++;
      combine(pos+1);
      used[i]--;
    }
  }
}
int main()
{
combine(0);
}

关键字: 排列组合算法 
引用地址: http://www.dlog.cn/html/trackback.do?id=9597&type=1 (复制地址)

 

排列组合算法总结(含Java实现)

一. 排列组合1. 排列(1)排列:(2)全排列:2. 组合:从n个元素中选择m个元素(不考虑顺序)...
  • Wendy0719
  • Wendy0719
  • 2017年06月06日 17:22
  • 2293

Java实现排列组合算法

用Java实现排列算法: package Sort; import java.util.ArrayList; import java.util.List; public class Arrange...
  • YHYR_YCY
  • YHYR_YCY
  • 2016年09月13日 09:51
  • 13013

java 高效率的排列组合算法(java实现)

感谢分享:http://blog.csdn.net/wmj2003/article/details/3678941
  • songylwq
  • songylwq
  • 2013年10月14日 11:18
  • 16011

高效率的排列组合算法(java实现)

 package BeanUtil;import java.util.ArrayList;import java.util.List;import com.work.core.exception.Ou...
  • wmj2003
  • wmj2003
  • 2009年01月01日 16:40
  • 23880

排列组合算法实现--基于JS

公司要做了个彩票的预测奖金业务,居然要用到高中的排列组合,好吧,这个时候不得不承认,高中没有白上啊..... 排列组合的思想大家都清楚(不清楚的请回高中自行面壁。)   C n n一下子理不清,于是我...
  • qq_28205539
  • qq_28205539
  • 2017年05月13日 14:31
  • 1322

java排列和组合算法

package com.louisgeek.price;/** * 排列和组合算法 * @author Administrator * */ public class CaseTest { ...
  • RichieZhu
  • RichieZhu
  • 2016年01月27日 14:27
  • 2506

排列和组合算法 C语言经典实现

排列和组合算法是考查递归的常见算法,这两种算法能用递归简洁地实现。 本人在经过多次摸索和思考之后,总结如下,以供参考。 程序代码如下:  1 #include  2 #includ...
  • huangkangying
  • huangkangying
  • 2011年10月12日 17:51
  • 25711

js实现全排列组合算法

js实现全排列组合算法
  • mxdzchallpp
  • mxdzchallpp
  • 2017年07月06日 20:11
  • 1129

js 排列 组合 的一个简单例子

最近工作项目需要用到js排列组合,于是就写了一个简单的demo。 前几天在网上找到一个写全排列A(n,n)的code感觉还可以,于是贴出来了, 排列的实现方式: 全排列主要用到的是递归和数组的插入 ...
  • dz45693
  • dz45693
  • 2016年10月24日 09:18
  • 2037

C语言实现排列/组合算法

/* *  文件名:Permutation.c*  用途:全排列算法*  编程环境:WinXP SP2+CL 8.0*  完成日期: 2006.2   Ver 0.01*  作者: 88250*  联...
  • DL88250
  • DL88250
  • 2007年05月06日 17:23
  • 10060
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【转】JAVA实现排列组合算法
举报原因:
原因补充:

(最多只允许输入30个字)