1到N的整数中,随机选出M个并升序排列的较高效算法
来源:互联网 发布:孙笑侠 知乎 编辑:程序博客网 时间:2024/06/05 18:33
/** * 从1到N的整数中,选出M个,按小到大排序存入数组 * @author rorom * @param n * @param m * @return */public int[] nInM(int n,int m){if(n<0||m<0||n<m) return null;//范围控制if(m==0) return new int[0]; int tab = 0;//交换暂储空间int k = n;//存储随机选中值的数组下标int[] all = new int[n];//将符合规则的数据载满数组for(int i=0;i<n;i++){all[i]=i+1;}//全选的话,就直接返回吧if(m==n) return all;int[] returnArr = new int[m];Random random = new Random();//要选多少号码就循环多少次while(m-->0){//每次随机获取从0到k(可选值的最后一个)以此为数组下标来获取实际值 int t = random.nextInt(k);//将获取的数移动到数组的最后端备用tab = all[t];all[t]=all[--k];all[k]=tab;//移动到位后进行排序,排序直到交换不了,证明已经排到位,则立即中断for(int i=k;i<n-1;i++){if(all[i]>all[i+1]){tab = all[i];all[i]=all[i+1];all[i+1]=tab;}else{break;}}}//将数据区的数据载入新数组并返回//for(int i=k;i<n;i++){//returnArr[++m]=all[i];//}System.arraycopy(all, k, returnArr, 0, returnArr.length);return returnArr;}
- 1到N的整数中,随机选出M个并升序排列的较高效算法
- 从大小为n的数组中随机选出m个整数,要求被选中的概率相同
- 对于一个m*n的整数矩阵,其中每一行和每一列的元素都按升序排列,设计一个高效的算法判断一个数值是否存在,并给出位置
- 生成0~n-1内的m个随机整数的四种算法
- 有N个正实数(注意是实数,大小升序排列) x1 , x2 ... xN,另有一个实数M。 需要选出若干个x,使这几个x的和与 M 最接近。
- 算法随机在一定范围内(min-max)选出m个不重复的数据放到一个数组中
- 从M个不同的整数中,选择N个出来排列
- 程序员面试金典——解题总结: 9.18高难度题 18.3编写一个方法,从大小为n的数组中随机选出m个整数。要求每个元素被选中的概率相同。
- 从M个数中随机选出N个数的所有组合,无序,(一)
- 从M个数中随机选出N个数的所有组合,有序,(二)
- 从0到n-1中随机等概率输出m个不重复的数
- 从0到n-1中随机等概率输出m个不重复的数
- 在[1,n]中随机取m个无重复数的Bob Floyd算法
- 从m个字符选出n个的所有组合
- 从n个数选出最大的m个的算法比较
- Java中从m个数中随机选取n个不同的数(m>=n),并进行排序
- nodejs.从n个小组中随机选出不重复的times个小组
- 如何设计一个高效算法从N个正整数中,随机选取n个不同的随机数 n<=N
- 游戏开发
- 第一个测试程序
- 求鞍点的小程序(梁璐)
- AIX系统换页空间
- linux,继续努力
- 1到N的整数中,随机选出M个并升序排列的较高效算法
- 用UBuntu开发OpenGL程序1
- 一个90后女程序员在路上(试用期工作经历)
- android中context
- ACM知识点分类
- Android 4.0 事件输入(Event Input)系统
- dll导出函数调用封装
- msvcrtd.lib(MSVCRTD.dll) : error LNK2005: __setmbcp already defined in libcmtd.lib(mbctype.obj)
- 三五杆枪,可干革命,三五个人,可以创业