본문 바로가기

프로그래밍/알고리즘3

삽입정렬(Insertion sort) 알고리즘 - c언어 예제 삽입정렬(Insertion sort) 이 알고리즘은 다른 알고리즘과 달리 스왑을 하는것이 아니라 temp에 n번째 값을 저장시켜 n-1번째 값이랑 temp를 비교시켜 n-1번째 값이 더 크다면 n번째에 n-1번째 값을 집어넣는 것이다. n-1 값이 더 크다면 n번째 자리에 temp의 값을 집어 넣는다. 삽입정렬의 시간복잡도는 O(n²)이다. 예제소스 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 #include #define n 5 int main() { int temp; int arr[n] = { 65,17,22,1,65 }; int i, j; for (i = 1; i temp;.. 2019. 3. 25.
선택 정렬(Selection sort)알고리즘 - c언어 예제 선택 정렬(Selection sort) 선택 정렬은 배열의 제일 작은 숫자를 찾아 n번째 자리와 교환하는 알고리즘이다. 시간 복잡도는 O(n²)이다. 제일 첫번째 숫자를 min으로 지정한 뒤 제일 작은 값을 찾아 min으로 지정해 min위치의 값과 첫번째 값을 교환한다. 이런식으로 비교를 하여 앞에서 부터 정렬을 완료하며 n-1번째 회전에는 마지막 값은 정렬된것으로 간주하여 마무리한다. 이 알고리즘의 단점으로는 정렬을 이미 완료하였더라도 n-1번 돈다는 것이다. 예제소스 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 #include #define n 6 .. 2019. 3. 25.
버블정렬 알고리즘 (c언어 예제) 버블 정렬(Bubble Sort) 버블 정렬이란 서로 인접한 두 수를 비교하여 정렬하는 알고리즘으로, n번째 수와 n+1번째 수를 비교하여 n번째 수가 더 클 경우 n+1번째 수와 교환하는 방법이다. 뒤부터 정렬되는 알고리즘으로, 다른 알고리즘들과 달리 flag를 사용하여 이미 정렬을 완료하였다면 멈출 수 있다. 시간 복잡도는 O(n²)로 상당히 느리지만, 코드가 단순하기 때문에 자주 사용된다. 수는 총 5개이므로 4번을 돌아야 하지만, flag를 사용하여 3회전 만에 정렬을 끝낼 수 있다. 처음 주어진 수에서 첫 번째와 두 번째, 두 번째와 세 번째, 세 번째와 네 번째, 네 번째와 다섯 번째 수를 비교하여 맨 뒤부터 정렬되는 것을 볼 수 있다. c언어 예제소스 1 2 3 4 5 6 7 8 9 10 1.. 2019. 3. 18.