본문 바로가기

C언어/자료구조

(38)
3-2장 선형 검색 1. 선형 검색 다루기 - 배열에서의 검색은 원하는 키값을 갖는 요소를 만날 때까지 맨앞부터 순서대로 요소를 검색 -ex) 배열 {6,4,3,2,1,2,8}에서의 검색 -2를 검색 : 검색 성공 - 5를 검색 : 검색 실패 - 선형 검색에서 배열 검색의 종료 조건 1) 검색할 값을 발견하지 못하고 배열의 끝을 지나간 경우 (검색 실패) - i == n이 성립하는 경우 2) 검색할 값과 같은 요소를 발견한 경우 (검색 성공) - a[i] == key가 성립하는 경우 - 요소 개수가 n인 배열 a에서 값이 key인 요소를 검색하는 코드 nt i =0; while(1) { if(i ==n) { return -1; //검색 실패 if(a[i] =-key) return 1; //검색 성공 i++; } - 요소 개..
3-1장 검색 알고리즘이란? 1. 검색과 키 ex) 1) 국적이 한국인 사람을 찾습니다. 2) 나이가 21세 이상 27세 미만인 사람을 찾습니다. 3) 어떤 낱말과 발음이 가장 비슷한 이름의 사람을 찾습니다. - 특정 항목에 주목 - 키 : 주목하는 항목 1) 키값과 일치하도록 지정(한국) 2) 키값의 구간을 지정(21세 이상 27세 미만) 3) 키값과 비슷하도록 지정 (발음이 가장 비슷한 이름) 2. 배열에서 검색하기 - 배열 검색 1) 선형 검색 - 무작위로 늘어놓은 데이터 모임에서 검색 수행 2) 이진 검색 - 일정한 규칙으로 늘어놓은 데이터 모임에서 아주 빠른 검색 수행 3) 해시법 - 추가, 삭제가 자주 일어나는 데이터 모임에서 아주 빠른 검색 수행 - 체인법 : 같은 해시값의 데이터를 선형 리스트로 연결 - 오픈 주소법 ..
2-2 구조체란? 1. 구조체 - 구조체 (structure) - 임의의 데이터를 다시 조합하여 만드는 자료구조 - 구조체 태그 (structure tag) : 구조체에 붙는 이름(xyz) - 구조체 멤버 (structure member) : 구조체를 구성하는 요소 //구조체 xyz struct xyz { int x; //int형 멤버 long y; //long형 멤버 double z; //double형 멤버 }; //struct xyz형 a의 정의 struct xyz a; //a를 가리키는 포인터 struct xyz *p = &a; - 구조체의 객체 안 멤버는 .연산자를 사용하여 접근 a.x //객체 이름.멤버이름( 객체 a안의 멤버 x) - p가 구조체형 객체에 대한 포인터일때 p가 가리키는 객체의 멤버 x에 접근하는..
2-1장 배열(2) 1. 배열 요소를 역순으로 정렬하기 - 맨 앞의 요소와 맨뒤에 요소 교환 - 교환 횟수 : 요소개수/2 - 요소 개수가 n인 배열 요소를 역순으로 정렬하는 코드 for(int i=0; i 왼쪽 요소의 인덱스 i (n이 7이면 0->1->2) -> 오른쪽 요소의 인덱스 n-i-1 (n이 7이면 6->5->4) - 두값의 교환 for(int i=0; i5) - prime[1]에 저장한 3으로 나눗셈 실행 - 3으로 나누어 떨어지므로 합성수로 판단 3.2 알고리즘 개선(2) - 100의 약수 (2,4,5,10,20,25,50,100) (2x50), (4x25), (5x10). (10x10), (20x5), (25x4), (50x2) - 정사각형 (10x10)을 중심으로 대칭 - 10까지만 소수로 나눗셈을 시도..
2-1 장 배열(1) 1. int[5]형 배열에 값을 입력해 출력 # define N 5 //배열의 요소 개수 int main() { int a[N]; //배열의 선언 for (int i = 0; i q는 double형 객체를 가리키는 포인터 -p=&n -> 포인터 p가 객체 n을 가리키기 위해서는 n의 주소를 p에 대입 -주소연산자 & -> 피연산자의 주소를 가져옴 -배열 이름 = 그 배열의 첫 번째 요소에 대한 포인터 -> a에 들어있는 값 = &a[0] (a[0]의 주소) -> 포인터 p가 배열의..
1장 기본 알고리즘 1. 세 정수의 최댓값 구하기 int main() { int a, b, c; printf("세 정수의 최댓값을 구합니다.\n"); printf("a 값:"); scanf_s("%d", &a); printf("b 값:"); scanf_s("%d", &b); printf("c 값:"); scanf_s("%d", &c); int max = a; if (b > max) max = b; if (c > max) max = c; printf("최댓값은 %d입니다.\n", max); return 0; } 2. 세 정수를 입력하고 중앙값을 구하여 출력 int med3(int a, int b, int c) { if (a >= b) if (b >= c) return b; else if (a c) return a; else ..