You are on page 1of 33

: C

Chapter 01.
Introduction To Data Structures Using C

Chapter 01.

Chapter 01-1:

#ifndef ~ #endif .

, !

,
!


int main(void)
{
//

int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};


. . . .
//
for(idx=0; idx<10; idx++)

sum += arr[idx];
. . . .
}

Chapter 01.

Chapter 01-2:

X ! Y ?

& 1

(time complexity)

(space complexity)

T(n) .

& 2


//
int LSearch(int ar[], int len, int target)
{
int i;

for(i=0; i<len; i++)


{
if(ar[i] == target)
return i;
//

}
return -1;
}

//

(best case) .

(worst case) .

(Average Case)

. .

. .

n ,
( ) n .

T(n) = n

T(n)

50%

n
2 n/2

1 n 1 3
T ( n) n n
2 2 2 4
!

1 2 ? . ?

1
:
1. 0 8.

2. 0 8 2 .
3. 2 4 arr[4] 3 !

3
!

, .

2
:
1. arr[4] 9 3 .

2. arr[4]>3 0~3 !
3. 0 3 2 . .
4. 2 1 arr[1] 3 .

3
:
1. arr[1] 2 3 .

2. arr[1] < 3 2~3 !


3. 2 3 2 . .
4. 2 2 arr[2] 3 .

1
first last
!
first last
!


while(first <= last)
// first <= last !
{
//
}

2
int BSearch(int ar[], int len, int target)
{
int first = 0;
//
int last = len-1;
//
int mid;

while(first <= last)


{
mid = (first+last) / 2;
// .
if(target == ar[mid])
//
{
return mid; // !
}
else
// .
{
if(target < ar[mid])
last = mid-1;
// -1 ?
else
-1 +1
first = mid+1;
// +1 ?
}
first <= mid <=last ,
}
return -1;
// -1
first last

1
while(first <= last)
{
mid = (first+last) / 2;
if(target == ar[mid])
{
return mid;
}
else
//
{
....
}
}

?
== !
==
.

n , ?

2
n
n 1
n/2 1
n/4 1
n/8 1

. . . . . n
! . . . . .
1 1

3

8 1 2 3, 3
1 , 1


n 1 2 k, k
1 , 1

1 !
T(n)=k+1

k !

n 1 ?

k .

T(n)= k+1
T (n) log 2 n 1

+1

T (n) log 2 n

n T(n)
+1 !

+1 +200 ?
- !

- (Big-Oh Notation)
T (n) n 2 2n 1

T(n)
-(Big-Oh) .

T (n) n 2 2n

n T(n)

+1 .

T (n) n

T(n) -

O( n 2 )
-

2n !

n 2n+1 .

-
-?
T(n) , - .

- !

-
-

vs.


BSWorstOpCount.c

- 1
-
f(n) g(n) , nK f(n)Cg(n)
C K , f(n) - O(g(n)).

-
2
5n 2 100 - O(n ) .

5n 2 100
!

n 2

- 2
-

n
f(n) Cg(n) C K ,

Chapter 01 !

You might also like