728x90
반응형
Q10. 배열 a의 모든 요소의 순서를 뒤섞는 shuffle 함수를 작성하세요. (n은 요소 개수입니다.)
void shuffle(int a[], int n);
코드)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define swap(type, x, y) do { type t = x; x = y; y = t; } while(0)
void shuffle(int a[], int n) {
int i=0; //index
srand(time(NULL));
for(i; i<n; i++) {
int shf_index = rand() % n;
swap(int, a[i], a[shf_index]);
}
};
int main(void) {
int i; //index
int ary_length;
int *org_ary;
printf("배열의 길이를 입력하세요. : ");
scanf("%d", &ary_length);
org_ary = calloc(ary_length, sizeof(int));
puts("배월 원소를 입력하세요.");
for(i=0; i<ary_length; i++) {
printf("원본 배열[%d] : ", i);
scanf("%d", &org_ary[i]);
}
shuffle(org_ary, ary_length);
for(i=0; i<ary_length; i++) {
printf("셔플된 배열[%d] : %d\n", i, org_ary[i]);
}
}
실행결과)
sy@sy:~/algorithm/doit/chap02$ ./q10
배열의 길이를 입력하세요. : 5
배월 원소를 입력하세요.
원본 배열[0] : 1
원본 배열[1] : 2
원본 배열[2] : 3
원본 배열[3] : 4
원본 배열[4] : 5
셔플된 배열[0] : 3
셔플된 배열[1] : 1
셔플된 배열[2] : 4
셔플된 배열[3] : 5
셔플된 배열[4] : 2
728x90
반응형
'Algorithm > Do it' 카테고리의 다른 글
[자료구조와 함께 배우는 알고리즘 입문 - C언어 편] 3장 검색 연습문제 Q1 답안 p.113 (0) | 2019.10.16 |
---|---|
[자료구조와 함께 배우는 알고리즘 입문 - C언어 편] 2장 기본 자료구조 연습문제 Q12 답안 p.93 (0) | 2019.10.12 |
[자료구조와 함께 배우는 알고리즘 입문 - C언어 편] 2장 기본 자료구조 연습문제 Q9 답안 p.75 (0) | 2019.10.09 |
[자료구조와 함께 배우는 알고리즘 입문 - C언어 편] 2장 기본 자료구조 연습문제 Q8 답안 p.75 (0) | 2019.10.09 |
[자료구조와 함께 배우는 알고리즘 입문 - C언어 편] 2장 기본 자료구조 연습문제 Q7 답안 p.75 (0) | 2019.10.09 |