zoukankan      html  css  js  c++  java
  • 数组洗牌

    将一个给定的数组洗牌,要求时间复杂度O(n),空间复杂度1:

    #include<stdio.h>
    
    int randomNum(int start,int end);
    int shuffle(int *a,int len);
    int main(void){
        int a[10]={0,1,2,3,4,5,6,7,8,9};
        int i;
        printf("洗牌前的数组:");
        for(i=0;i<10;i++){
            printf("%d  ",a[i]);
        }
        srand(time(NULL));//刷新随机数
        shuffle(&a,10);
        printf("
    洗牌后的数组:");
        for(i=0;i<10;i++){
            printf("%d  ",a[i]);
        }
        return 1;
    }
    
    int randomNum(int start,int end){//产生指定范围随机数[start,end)
        int r=rand()%end;
        while(r<start)
            r=rand()%end;
        return r;
    }
    
    int shuffle(int *a,int len){   //洗牌函数
        int i,addr,tmp;
        for(i=0;i<len;i++){//遍历一次实现洗牌
            addr=randomNum(i,len);
            tmp=a[i];
            a[i]=a[addr];
            a[addr]=tmp;
        }
    }
  • 相关阅读:
    selenium 难定位元素、时间插件
    列表生成式
    三元表达式
    监控日志
    非空即真
    深拷贝浅拷贝
    元组
    list字典嵌套
    2021
    布尔类型
  • 原文地址:https://www.cnblogs.com/ydpup/p/3372783.html
Copyright © 2011-2022 走看看