前N个自然数的随机置换
来源:互联网 发布:知乎 古龙经典片段 编辑:程序博客网 时间:2024/05/14 09:18
一个三个算法。
//O(N*N*logN) #include <stdio.h>#include <stdlib.h>#include <time.h> #define Size 40long RandInt(long i,long j)//give a random between i and j {if (0 == i ) {return rand()%j;}else{return rand()%(j-i+1)+i;}}int IfDuplicate(long A[ ],long end,long rand )//return 0 means rand is duplicate{int i;for (i = 0; i < end; i++){if (rand == A[i] ){return 1;}}return 0;}int main(){long i = 1,j,ran,k;long A[Size];srand(time(NULL));A[0] = RandInt(1,Size);while(i < Size){ran = RandInt(1,Size);if (!IfDuplicate(A, i ,ran)){//if there is no duplicate give random to a[i]A[i] = ran;i++;}}k = 1;while (k < Size+1){printf("A[%ld] = %-4ld ",k,A[k-1]);if(k%5 == 0){printf("\n");}k++; } return 0;}
//O(N*log(N)) #include <stdio.h>#include <stdlib.h>#include <time.h> #define Size 40int RandInt(int i,int j)//give a random between i and j { if(i==0) return rand()%j; else return rand()%(j-i+1)+i;}int main(){int i,ran,k;int A[Size],used[Size+1]={0};srand(time(0));for(i=0;i<Size;i++){ran=RandInt(1,Size);while(used[ran]==1){ran=RandInt(1,Size);}A[i]=ran;used[ran]=1;}for(k=0;k<Size;k++){printf("A[%d] = %d ",k,A[k]);if(k%5==0){printf("\n");}}return 0;}
//O(N)#include <stdio.h>#include <stdlib.h>#include <time.h>#define Size 5long RandInt(long start,long end)//give a random between i and j { return start+(end-start)*rand()/(RAND_MAX + 1.0);}int main(){srand(time(NULL)); long i , j, k,ran; long c; long A[Size];for(i = 0; i < Size; i++){A[i]=i+1;}for(j = 1; j < Size; j++){c=A[j];ran=RandInt(0,j);A[j]=A[ran]; A[ran]=c;}k = 1;while (k < Size+1){printf("A[%ld] = %-4ld ",k,A[k-1]);if(k%5 == 0){printf("\n");}k++; } return 0;}
历时一天终于全部搞定了。。好不容易
0 0
- 前N个自然数的随机置换
- 生成前N个自然数的一个随机置换
- 生成前N个自然数随机置换的3个程序
- 生成前N个整数的一个随机置换java实现
- 前n个自然数的阶乘之和(单数,双数,全部)
- 用递归方法求前n个自然数的平方和
- 通过n次循环获得n个自然数随机排序
- 用多线程并发实现不重复的N个伪随机自然数
- 归纳策略——求前n个自然数的平方之和
- 随机生成前N个不重复的整数
- N个自然数的排序算法
- 华为:有N个大小不等的自然数排序
- n个自然数中取r个数的组合
- oc 数组随机打乱 并取前N个元素
- 求自然数的前n项和,如1+2!+3!+...+n!
- 一个正整数n被分成若干个不同自然数的和,求组成n的一组自然数的最大乘积
- 蓝桥杯 C++ 输入一个自然数n,n的立方等于n 个连续的奇数和
- 输入一自然数n,求组成n3的n个连续奇数
- C++ vector的使用方法,已经iterator的介绍
- TQ210coreD开发板,新品核心板参数发布
- 怎样使用命令来结束进程
- Boost库简单运用——时间与日期的处理(二)
- STL总结之vector、deque、list
- 前N个自然数的随机置换
- 基于ViewPager实现大量图片浏览功能
- 多线程:
- const and static value in class
- android 通过setContentView切换Activity的View,保存动态修改后的视图
- 对百度地图问题
- Android 手势检测实战 打造支持缩放平移的图片预览效果(上)
- jQuery中blur和focus事件的应用
- 屏幕适配