꿈의 세상
-
이진 탐색(Binary Search) 알고리즘과 시간 복잡도프로그래밍/자료구조 2016. 12. 16. 14:43
이진 탐색(Binary Search) 알고리즘과 시간 복잡도 이진 탐색(Binary Search) 순차탐색이 있으면 이진 탐색도 있다. 이진탐색이란 우선 이진탐색을 하기위해서는 반드시 정렬이 되어있어야한다. 이진탐색은 정렬된 데이터가 아니면 적용을 할 수 없기 때문이다. 우선 이진 탐색은 정렬된 데이터의 집합을 이분화 하면서 탐색하는것이다. 이진 탐색의 원리는 다음과 같다. [2] [4] [5] [7] [10] [20] [23] [29] [32] arr[0] arr[1] arr[2] arr[3] arr[4] arr[5] arr[6] arr[7] arr[8] 이렇게 정렬된배열이 있다고 가정한다. 배열의 이름을 arr이라 가정하고 이 배열을 대상으로 원하는값이 5라면 5를 찾기위한 이진트리의 원리는 이렇하다..
-
자료구조와 알고리즘의 성능분석방법프로그래밍/자료구조 2016. 12. 16. 01:50
자료구조 (Data Structure) 자료구조란 컴퓨터에서 처리할 자료들을 효율적으로 관리하고 구조한것이다.자료구조는 데이터를 표현한다는데 표현한다는뜻에는 저장의 의미도 담겨져있다.이렇게 자료들을 표현하면 그것들을 처리하는것을 알고리즘 이라고 한다.그래서 알고리즘은 자료구조에 의존적이기도하다 자료구조에는 다음과 같은 구조들이 있다 자료구조를 크게 나뉘어보면 선형구조와 비선형구조, 파일구조와 단순구조로 나눌수있다. 자료구조에서 배울내용들은 선형구조와 비선형구조를 주로 다루기도한다. 또한 자료구조는 수학과 많은 연관을 나뉘어지며 특히 이수식을 잘 알아야한다. x축이 데이터를 의미하고 y축이 연산의 횟수를 의미한다면 과연 두 식중에 어떤게 더 효율적인가 아무래도 데이터가 많을수록 연산횟수가 적으면 좋은 프로..
-
비트 연산자프로그래밍 언어/C 2016. 12. 14. 14:35
비트 연산자 (Bitewise Operation) 비트 연산자란 2진수를 비교해서 연산하는 것이다.비트 연산자는 메모리 공간을 제어할 수 있기때문에 하드웨어를 제어할때 좋다. 비트 연산자들을 살펴보자. AND 연산자 &연산자는 AND 라는 연산자인데 사용방법은 num1 & num2; 이렇게 지정해두어서 사용하기도한다. 이것을 예를들어 비트단위로 연산이 이루어지면 ex) 101011101001011010------------001011000 이라는 값이 나온다.어떻게 해서 저런값이 나오는지 이해가 가는가?아직 감이 안오면 아래의 그림을 보고 이해하면된다. AND연산자는 각 비트단위마다 비교를해서 0 과 0 이 만나면 0 을 반환하고0 과 1 이 만나면 0 을 반환하고1 과 0 이 만나면 0 을 반환하고1 ..
-
정수의 표현과 2의 보수프로그래밍 언어/C 2016. 10. 22. 16:19
정수의 표현을 알아보자 정수의 표현을 알기위해선 2진수를 알아야 한다. 2진수는 0과 1로 이루어진 숫자이다.2진수는 컴퓨터를 배우기위해 필요한 숫자이다. 알아두어야한당~! 2진수의 음수2진수의 음수를 알기전에 먼저 2진수를 알아보자. 6의 이진수는 00000110 이다.그럼 음수는 어떻게 표현할까...음수의 표현은 2진수의 맨 왼쪽(Most Significant Bit)비트를 MSB라고 부른다.이 MSB는 부호를 표시한다. 00000110 여기서 보면 맨 왼쪽의 비트가 0을 가리키기때문에 +로 인식한다.그래서 이 2진수는 +6을 가리킨다. 10000110 여기서 보면 맨 왼쪽의 비트가 1을 가리키기때문에 -로 인식한다.그래서 이 2진수는 -6을 가리킨다. 하지만 MSB가 1이 붙어있다고 무조건 다 음수..
-
scanf함수 알아보자프로그래밍 언어/C 2016. 10. 20. 12:54
C언식어의 데이터 입력 c언어 의 scanf()함수 알아보자 c언어의 출력함수인 printf()가 있으면 데이터를 입력해주는 scanf()함수가 있다. scanf()의 사용방법 ex) scanf("%d", &a); scanf()를 해석해보면 scanf("서식문자", &변수값); 서식문자를 입력하여 입력하려는 숫자의 타입이 정수형인지, 실수형인지 식별한다. 그뒤에는 변수값을 지정하여 입력된 값을 변수에 저장하는것이다. 쓰이는 모양은 printf와 비슷하지만 다른점이 변수앞에 & 가 붙는 다는것이다.&의 의미는 메모리상의 올라간 변수를 지정하는방법으로 &를 이용하여저장을 해야한다. scanf도 printf와 마찬가지로 여러개의 인자를 입력하여 여러수를 변수에 저장할 수 있다. vol.6
-
C언어의 연산자프로그래밍 언어/C 2016. 10. 18. 21:53
다양한 연산자 알아보기 대입연산자와 산술연산자 수학에 있는 연산자와는 조금 다른면을 갖고있다. 수학에서 우리가 알고있는 = 연산자는 같다는 의미를 갖고있지만,c언어에서의 연선자에서는 대입하라는 것이다. num = 20 은 num은 20 이다 라는뜻이 아니라,num 이라는 변수에 20을 대입한다 라는 것이다.즉, 오른쪽에 있는 값을 왼쪽으로 대입하는연산자. num = 4 +6 은 num 이라는 변수에 4+6 의 값을 대입한다. 라는 뜻이다. 복합 대입 연산자 a = a + b 를 좀더 간결하게 a+=b 이렇게 할 수 있다.이걸 쓰는 이유는 간결하고 속도면에서 좀더 빠른 연산을 하기때문이다. 증가 감소 연산자 증감식에서 중요한것은 --와 ++가 앞에 있느냐 뒤에있느냐에 따라 값이 달라질수있다.--나 ++ 가..
-
변수와 데이터 타입프로그래밍 언어/C 2016. 10. 18. 17:00
변수를 이용하여 데이터를 저장 변수란..크기가 변할수 있는 값이다.ex) int num, i, j; 변수의 반댓말은 상수!! 크기가 변할수 없는 값. ex) 1 , 10, 5, 2.56 수학에서 x나 y처럼 변수를 사용하듯이 C언어에서도 변수를 사용할 수 있다. C언어에서 사용하는 변수를 알아보자 데이터 타입 변수이름 int num; c언어에서 변수를 지정할때는 데이터 타입과 변수이름을 선언해주고세미콜론으로 마무리를 해주어야 된다. 데이터 타입이란저장할 데이터의 타입을 실수, 정수, 문자 등으로 구분을 지어주는것이다.데이터 타입은 데이터 타입에 따라 크기가 달라진다.int 는 정수형데이터 타입을 저장해준다.즉, 위에 예시를 해석해보면 num이라는 변수는 정수형 데이터 타입을 가진 변수이다! 라고 읽을수 ..