[문제1] n개의 양의 정수를 입력받아, 제자리 선택정렬을 하는 프로그램
-배열의 뒷 부분을 정렬 상태로 유지
입력예시 출력예시
8 2 5 6 8 1 7 3 4 |
1 2 3 4 5 6 7 8 |
#include<stdio.h> #include<stdlib.h> void main(){ int *arr; int arrNumber, max, temp; scanf("%d", &arrNumber); arr = (int*)malloc(sizeof(int)*arrNumber); for (int i = 0; i < arrNumber; i++){ scanf("%d", &arr[i]); } for (int i = arrNumber - 1; i >= 0; i--){ max = 0; for (int j = 1; j <= i; j++){ if (arr[j] > arr[max]){ max = j; } } for (int j = 0; j <= i; j++){ if (max == j){ temp = arr[i]; arr[i] = arr[max]; arr[max] = temp; break; } } } for (int i = 0; i < arrNumber; i++) { printf(" %d", arr[i]); } printf("\n"); free(arr); } |
[문제2] n개의 양의 정수를 입력받아, 제자리 삽입정렬을 하는 프로그램
- 배열의 앞 부분을 정렬 상태로 유지
입력예시 출력예시
8 2 5 6 8 1 7 3 4 |
1 2 3 4 5 6 7 8 |
#include<stdio.h> #include<stdlib.h> void main(){ int *arr; int arrNumber, temp, j; scanf("%d", &arrNumber); arr = (int*)malloc(sizeof(int)*arrNumber); for (int i = 0; i < arrNumber; i++){ scanf("%d", &arr[i]); } for (int i = 1; i < arrNumber; i++){ temp = arr[i]; j = i-1; while ((j >= 0) && (arr[j] > temp)) { arr[j + 1] = arr[j]; j = j - 1; } arr[j + 1] = temp; } for (int i = 0; i < arrNumber; i++) { printf(" %d", arr[i]); } printf("\n"); free(arr); } |
'알고리즘' 카테고리의 다른 글
[알고리즘] 힙과 힙정렬(2) - 예제 (0) | 2018.12.12 |
---|---|
[알고리즘] 힙과 힙정렬(1) - 설명 (0) | 2018.12.12 |
[알고리즘] 우선순위 큐(1) - 설명 (0) | 2018.12.07 |
[알고리즘] 기본 추상자료형(10) - 예제(트리ADT) (0) | 2018.12.05 |
[알고리즘] 기본 추상자료형(9) - 예제(트리ADT) (0) | 2018.12.05 |