본문 바로가기
C/☞

[41] 셔플

by TR. 2020. 7. 23.

셔플

ㄴ 배열 안에 있는 값을 랜덤으로 배치

 

. 인덱스 0의 값과 <-> 인덱스 랜덤의 값을 교환

. 100번 반복

 

    int scores[5] = {100, 90, 80, 70, 60};
    
    srand((unsigned int)time(NULL));
    // while
    int n = 0;
    while(n < 100){
        int r = rand() % 4 +1;  // index 1~4 (0제외)
        int temp = scores[0];
        scores[0] = scores[r];
        scores[r] = temp;
        n += 1;
    }
    
    // for
    for(int i=0; i<100; i++){
        int r = rand() % 4 +1;
        int temp = scores[0];
        scores[0] = scores[r];
        scores[r] = temp;
    }

    // print
    for(int i=0; i<5; i++){
        printf("%d ", scores[i]);
    }
    printf("\n");

 

연습문제

    // 연습문제 : 셔플 & 정렬
    // . 배열값 셔플 후, 출력1
    // . 오름차순으로 재정렬 후, 출력2
    
    int age[5] = {99, 65, 43, 31, 27};
더보기
    // shuffle
    srand(time(0));
    for(int i=0; i<1000; i++){
        int r = rand() % 4 +1;
        int temp = age[0];
        age[0] = age[r];
        age[r] = temp;
    }
    for(int i=0; i<5; i++){
        printf("%d ", age[i]);
    } printf("\n");

    // align
    for(int i=0; i<5; i++){
        for(int j=i; j<5; j++){
            if(age[i] > age[j]){
                int temp = age[i];
                age[i] = age[j];
                age[j] = temp;
            }
        }
    }
    for(int i=0; i<5; i++){
        printf("%d ", age[i]);
    } printf("\n");

'C > ' 카테고리의 다른 글

[43] 배열과 포인터  (0) 2020.07.23
[42] 포인터 기본  (0) 2020.07.23
[40] 정렬  (0) 2020.07.23
[39]-A. 회원가입  (0) 2020.07.23
[39] 회원가입  (0) 2020.07.23

댓글