반응형
Bubble Sort와
Insert Sort를 각각 이용해서 문제 해결
#include <iostream>
using namespace std;
void Bubble_sort(int* arr, int N) {
int temp;
for(int i = N-1; i>0; i--) {
for(int j = 0; j<i; j++) {
if(arr[j]>arr[j+1]) {
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
void insert_sort(int* arr, int N) {
for(int i=1; i<N; i++) { //index 1부터 시작해야함.
int k=i; int v = arr[k];
//이중포문 대신에 간단한 while문
while(k) {
if(v<arr[k-1]) { //선택값과 아랫값들을 차례로 비교
arr[k] = arr[k-1]; //밀어넣기
k--;
} else
break;
}
// 최종적으로 k-1 인덱스에 넣는 것이 목적이므로, 밀어넣기 후 k--해서 넘겨온 값을 그대로 이용하는 것.
if(k!=i) //위치변경이 있었을 경우에만 실행
arr[k]=v;
}
}
int main() {
int N;
cin >> N;
int* arr = new int[N];
for(int i=0; i<N; i++) {
cin >> arr[i];
}
insert_sort(arr, N);
//or
Bubble_sort(arr, N);
for(int i=0; i<N; i++) {
cout << arr[i] << endl;
}
}
시간복잡도 : 각각 O(n^2)
반응형
'[백준]' 카테고리의 다른 글
[BaekJoon/백준] 10989번 (0) | 2020.11.27 |
---|---|
[BaekJoon/백준] 2751번 (0) | 2020.11.26 |
[BaekJoon/백준] 1436번 (0) | 2020.10.03 |
[BaekJoon/백준] 1018번 (0) | 2020.10.03 |
[BaekJoon/백준] 7568번 (0) | 2020.10.02 |