Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chapter 8 Arrays.

Similar presentations


Presentation on theme: "Chapter 8 Arrays."— Presentation transcript:

1 Chapter 8 Arrays

2 구조화 데이터 원소 간의 연관성이 있는 자료 구조화 형 배열, Structure형, 문자열, union
데이터 구성 원소들 간에 연관이 있을 때 이를 표현한 형 기본형의 확장으로 사용자가 새로운 형을 선언 궁극적으로 C++ 등에서는 더욱 확대됨 배열, Structure형, 문자열, union

3 배열 C언어는 배열을 연속된 메모리 위치로 봄. 실제 메모리 배정은 다를 수 있으나 연속된 메모리로 봄
배열은 실제 포인터와 위치계산 방법으로 구성 0번부터 위치 부여(첨자, 인덱스)

4 Figure 8-1

5 Figure 8-2

6 Figure 8-3

7 Figure 8-4

8 Figure 8-5

9 배열 선언과 접근 선언 접근 C의 배열의 특징 형 배열이름 [배열 크기] 배열이름[위치]
int sum[100]; char elmt[50]; float avg[100] 접근 배열이름[위치] sum[59], elmt[0], avg[j] 오류: sum[100], elmt[-10], avg[990] 문제는 범위를 넘어도 오류로 나타내지 않음 C의 배열의 특징 속도를 고려 … sum[i]  sum+i*sizeof(sum) 범위 검증을 하지 않음  비교연산을 줄임, 범위를 넘어선 자료를 접근해도 오류를 주지 않음 !!!!!

10 Figure 8-6

11 변수 초기화, 우선순위 선언시 초기화 가능 후에 초기화할 수도 있음
Static변수와 전역변수에 대해서는 0으로 초기화할 필요가 없음  number[3]*7  배열이 우선

12 Figure 8-7

13 값 지정 scores[4] = 23; for(i=0;i<25;i++) second[i] = first[i];
for(i=0;i<9;i++) scores[i] = i*2; 값 바꾸기 temp=numbers[1]; numbers[1]=number[3]; numbers[3]=temp; 한 칸씩 밀 때 ---- 배열에서 …. 설명(실습문제) 앞에서 temp1= temp2; temp2=number[i+1]; number[i+1]=temp1; 다른 방법???

14 Figure 8-8

15 Figure 8-9

16 다른 여러 재미있는 처리 예제 값을 제곱하기 값을 읽어서 반대로 출력하기 값을 합하여 평균 구하기 등등

17 반대로 출력 printf("\nYour numbers reversed are: \n");
for (i = readNum - 1, numPrinted = 0; i >= 0; i--) { printf("%3d", numbers[i]); if (numPrinted < 9) numPrinted++; else printf("\n"); numPrinted = 0; } /* else */ } /* for */

18 배열 인자 배열을 함수의 파라미터로 보내기 배열 이름 자체가 포인터임, 따라서 이름 자체를 파라미터로 쓸 수 있음
따라서 포인터를 보내고 받는 개념임 값 전달방식이지만 배열 자체가 포인터이므로 주소전달처럼 처리됨 단, f(num[i])처럼 전달하면 이때는 num[i]의 값이 전달됨

19 Figure 8-10

20 Figure 8-11

21 Figure 8-12

22 Figure 8-13

23 히스토그램 성적분포 구하기 문자인식 영상검색 기울어진 문서 바로 잡기

24 Figure 8-14

25 Figure 8-15

26 Figure 8-16

27 정렬 선택정렬 – 가장 작은 값을 찾아서 정렬 안 된 것 중 제일 앞과 바꿈
버블정렬 – 가장 작은 값을 뒤에서부터 찾으면서 이동시킴 삽입정렬 – 처음부터 정렬된 것에 정렬 안 된 값을 끼워 넣는 방법

28 Figure 8-17

29 Figure 8-18

30 Figure 8-19

31 Figure 8-20

32 Figure 8-21

33 Figure 8-22

34 검색 순차탐색(sequential search) --처음부터 모두 검색 이진탐색 O(n) O(log(n))
정렬된 자료에 한함. 가운데 값을 비교하면서 검색범위를 줄임 ‘n/2’를 적용

35 Figure 8-23

36 순차탐색 /* ==================== seqSearch ====================
Post FOUND: matching index stored in locn address return 1 (found) NOT FOUND: last stored in locn address return 0 (not found) */ int seqSearch (int list[], int last, int target, int *locn) { /* Local Definitions */ int looker; /* Statements */ looker = 0; while (looker < last && target != list[looker]) looker++; *locn = looker; return (target == list[looker]); } /* seqSearch */

37 Figure 8-24

38 Figure 8-25

39 이진탐색 int binarySearch (int list[], int end, int target, int *locn) {
/* Local Definitions */ int first; int mid; int last; /* Statements */ first = 0; last = end; while (first <= last) mid = (first + last) / 2; if (target > list[mid]) /* look in upper half */ first = mid + 1; else if (target < list[mid]) /* look in lower half */ last = mid - 1; else /* found equal: force exit */ first = last + 1; } /* end while */ *locn = mid; return target == list [mid]; } /* binarySearch */

40 Figure 8-26

41 Figure 8-27

42 2차원 배열 int a[10][20] 행(row), 열(column) Row-major
위치 계산 a[i][j]  a+(i*20+j)*sizeof(a)로 계산하여 메모리에 연속으로 저장 및 접근

43 Figure 8-28

44 Figure 8-29

45 Figure 8-30

46 초기화/값입력 초기화 값 입력 값 전달 int table[2][3]={0,1,2,3,4,5};
뒤 예문 참조 값 전달 전체 전달 : 배열 이름 : table 행만 전달 : 행 부분까지만 표시 : table[1] table, table[0], table[1]도 포인터 값이다….

47 Figure 8-31

48 Figure 8-32

49 재미있는 예제 프로그램들 장방형 값 채우기 매트릭스 곱하기 히스토그램 구하기

50 Figure 8-33

51 다차원 배열 2차원 배열의 확장 다차원의 경우 마지막 차원까지 표현되지 않으면 주소임 int a[5][6][7][8]
a[i][j][k][l]  ((((i*6)+j)*7+k)*8+l)*sizeof(int)

52 Figure 8-34

53 Figure 8-35

54 Figure 8-36

55 여러 가지 예 행과 열의 값 합하기/평균내기 다차원 배열의 응용을 생각해보자!!!

56 Figure 8-37

57 Figure 8-38

58 Figure 8-39

59 Figure 8-40

60 Figure 8-41

61 실습문제 및 예습 실습 예습 1차원 배열의 값을 한 칸씩 오른쪽 또는 왼쪽으로 옮기는 함수를 구함.
첫 번째 값이 1이면 오른쪽, -1이면 왼쪽 아니면 오류임, 오른쪽으로 옮기면 마지막 값이 첫 번째로, 왼쪽은 반대로 됨 어떤 문서를 읽어서 알파벳과 숫자의 개수를 세는 프로그램 작성… 대문자와 소문자는 구별하지 않음 31번, 38번, 52번 예습 9장 19, 21, 22, 28


Download ppt "Chapter 8 Arrays."

Similar presentations


Ads by Google