U E D R , A S I H C RSS

새싹교실/2017/따라와반/과제방/자료구조/2회차



1. 오늘의 실습 내용

2. 신원준

2.1. 수 정렬하기

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char* argv[]) {
	int n, i, j, minj, temp;
	int *arr;
	
	scanf("%d", &n);
	arr = (int *)malloc(sizeof(int) * n);

	for(i=0; i<n; i++) scanf("%d", arr + i);
	for(i=0; i<n; i++) {
		minj = i;

		for(j=i+1; j<n; j++) {
			if(arr[j] < arr[minj]) {
				minj = j;
			}
		}
		temp = arr[minj];
		arr[minj] = arr[i];
		arr[i] = temp;

		printf("%d\n", arr[i]);
	}

	return 0;
}

2.2. 수 찾기

#include <stdio.h>
#include <stdlib.h>

// 오름차순 정렬
int compare (const void *first, const void *second)
{
    if (*(int*)first > *(int*)second)
        return 1;
    else if (*(int*)first < *(int*)second)
        return -1;
    else 
        return 0;
}

int main(int argc, char* argv[]) {
	int n1, n2, i;
	int *arr1, *arr2;

	int B_S(int *arr, int size, int solution);
	
	scanf("%d", &n1);
	arr1 = (int *)malloc(sizeof(int) * n1);

	for(i=0; i<n1; i++) scanf("%d", &arr1[i]);

	// 정렬
	qsort(arr1, n1, sizeof(int), compare);

	scanf("%d", &n2);
	arr2 = (int *)malloc(sizeof(int) * n2);

	for(i=0; i<n2; i++) scanf("%d", &arr2[i]);

	// 서치
	for(i=0; i<n2; i++) {
		printf("%d\n", B_S(arr1, n1, arr2[i]));
	}
	return 0;
}

// 바이너리 서치
int B_S(int *arr, int size, int solution) {
	int s=0, e=size-1;
	int m;

	while(s <= e) {
		m = (s+e)/2;

		if(arr[m] > solution) e = m - 1;
		else if(arr[m] < solution) s = m + 1;
		else return 1;
	}
	return 0;


}


3. 이민욱

3.1. 수 정렬하기

#include <stdio.h>
int main() {
	int N;
	int A[2000];
	scanf("%d", &N);
	for (int i = 0; i < N; i++) {
		scanf("%d", &A[i]);
	}
	for (int i = 0; i < N; i++) {
		for (int j = i; j < N; j++) {
			if (A[i] > A[j]) {
				int tmp = A[i];
				A[i] = A[j];
				A[j] = tmp;
			}
		}
	}
	for (int i = 0; i < N; i++) {
		printf("%d\n", A[i]);
	}
	return 0;
}

3.2. 수 찾기

#include <stdio.h>
#include <stdlib.h>

int A[100001];
int N;
int compare(void *first, void* second){
    if(*(int*)first> *(int*)second) return 1;
    else if(*(int*)first<*(int*)second) return -1;
    return 0;
}

int B_S(int s, int e, int search){
    int m = (s+e)/2;
    if(s>e) return 0;
    if(A[m]==search) return 1;
    else if(A[m]>search) return B_S(s,m-1,search);
    else return B_S(m+1, e, search);
}

int main() {
    int i, j, min_idx, tmp, T, search;
    scanf("%d", &N);
    for(i=0;i<N;i++) {
        scanf("%d",&A[i]);
    }
    qsort(A, N, sizeof(int), compare);
    scanf("%d", &T);
    for(i=0;i<T;i++){
        scanf("%d", &search);
        printf("%d\n", B_S(0, N-1, search));
    }
    return 0;
}

4. 정석우

4.1. 수 정렬하기

(코드는 여기에)

4.2. 수 찾기

(코드는 여기에)
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:30:08
Processing time 0.0244 sec