qq_27395875 2015-04-14 04:21 采纳率: 0%
浏览 1823

求助Java算法,这两个算法问题有Java代码实现

  1. 从N个元素集合里面随机抽取M个元素(M<N)。

C/C++:
void randomChoose(int*data, intn, int *result, int m);
Java:
void randomChoose(int data[], int result[]);

说明:
1.Data是待抽取的元素集合,n是data的长度,result是抽取的结果,m是结果集的长度。
2.同一个元素不能被反复抽取。
3.每个元素被抽取到的概率必须相同。
4.不需要自己写随机函数,C版本中允许使用rand()函数,java版本中允许使用Random对象
5.算法效率尽可能高
6.必须要有代码注释和算法说明。
例如:data里面的数据是{3, 4, 9}。n = 3, m = 2。此时result的可能输出结果有{3, 4},{3, 9},{4, 9},{4,3},{9, 3},{9, 4},每种可能的输出概率相同。
2.交换链表的奇偶顺序

函数说明:
swap函数交换链表第2i和第2i+1个元素(如果都有的话),并返回交换之后的链表。
示例:
交换前链表的顺序 交换后链表的顺序
1→2→3→4→5 ==> 2→1→4→3→5
1 ==> 1 (链表仅含一个元素)
1→2 ==> 2→1
==> (链表为空)

C/C++:
链表节点定义为:
struct node {
struct node *next;

};
struct node *swap(struct node *list);
Java:
链表节点定义为:
class Node {
public Node next;

}
Node swap(Node list)

注意点和要求如下:
0. swap函数返回新的链表指针
1. swap函数要求对节点的指针/引用进行操作(不得创建任何新的链表节点)
2. 不得使用任何库函数/API,如需使用类似功能, 请自行实现
3. 不得将链表转化为其他类型数据结构再进行交换,如数组等

  • 写回答

2条回答

  • devmiao 2015-04-14 04:24
    关注

    下面一个问题用递归。

    评论

报告相同问题?

悬赏问题

  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题