반응형
int 배열 반환하기
#include <stdio.h>
int* bubble_sort(int a[], int length);
int main(void){
int a[5] = {1, 2, 3, 4, 5};
int* b = bubble_sort(a, 5);
return 0;
}
int* bubble_sort(int a[], int length){
int temp;
for(int i = 0; i < length; i++){
for(int j = 0; j < length - 1 - i; j++){
if(a[j] > a[j+1]){
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
return a;
}
int* b = 함수명 〓 int* (새로운 변수명)
Q. 위 코드에서 새로운 변수명이 아닌 리턴 받은 값을 다시 변수 a에 저장하려면 코드를 어떻게 작성해야 할까요?
bubble_sort라는 함수가 매개변수로 a를 받은 후 함수 안에서 a에 저장된 int의 순서를 바꾸고 있으므로, bubble_sort 함수가 끝나면 자동으로 a는 정렬된 int들을 갖게 됩니다.
즉, 굳이 return a; 후 a = bubble_sort(a, 5)라고 하실 필요 없이 bubble_sort 함수가 끝난 후 main에서 그냥 a를 사용하시면 됩니다.
Q. 위의 질문에 이어서, (1) 이전 배열에 덮어쓰는 것과 (2) 배열을 return하여 새로운 배열에 저장하는 것 둘 중에 어떤 방법이 더 효율적이며, 실제로 코드를 짤 때 어떤 방법을 더 많이 사용하는지 궁금합니다.
(1)
bubble_sort(num, LENGTH);
...
...
void bubble_sort(int a[], int length){
int temp; for(int i = 0; i < length; i++){
for(int j = 0; j < length - 1 - i; j++){
if(a[j] > a[j+1]){
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
}
(2)
int* num_new = bubble_sort(num, LENGTH);
...
...
int* bubble_sort(int a[], int length){
int temp; for(int i = 0; i < length; i++){
for(int j = 0; j < length - 1 - i; j++){
if(a[j] > a[j+1]){
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
return a;
}
1번 코드와 2번 코드를 비교하자면, 1번 코드가 더 효율적이라고 할 수 있습니다.
2번 코드에서는 num_new라는 새로운 변수가 선언되어 메모리를 차지하게 됩니다. 이는 num과 같은 곳을 가리키는 필요 없는 포인터로, 굳이 num_new라는 변수를 새로 선언할 필요가 없습니다.
반응형
'Education' 카테고리의 다른 글
[제주코딩베이스캠프] 웹개발 30분 요약 - 1. HTML, CSS, JS와 Front-end 개발자에 대하여 (0) | 2020.08.04 |
---|---|
[제주코딩베이스캠프] 제주 인스타그램 클론 캠프 합격 (0) | 2020.08.04 |
[부스트 코딩 뉴비 챌린지 2020] week4_미션02 (0) | 2020.08.02 |
[부스트 코딩 뉴비 챌린지 2020] week4_미션01 (0) | 2020.08.01 |
[부스트 코딩 뉴비 챌린지 2020] week4_샘플미션 (0) | 2020.07.31 |