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
    关注

    下面一个问题用递归。

    评论

报告相同问题?

悬赏问题

  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面