[알고리즘] 백준 2751번 문제_1000만개 정렬
·
알고리즘
1000만개 정렬 : https://www.acmicpc.net/problem/2751 ================================== 풀이 ==================================== ​ 퀵 정렬 : 하나의 큰 문제를 두 개의 작은 문제로 분할하는 식으로 빠르게 정렬 int data[1000000]; void quickSort(int *data, int start, int end) { if (start >= end) { return; } int key = start, st = start + 1, ed = end, tmp; while (st = data[st] && st ed) { tmp = data[key]; data[key] = data[ed]; data[ed] =..
[알고리즘] 백준 2752번 문제_세수 정렬
·
알고리즘
세수 정렬 : https://www.acmicpc.net/problem/2752 ​ ================================== 풀이 ==================================== ​ 선택 정렬 : 가장 작은 값을 앞으로 이동 ( 연산횟수 : 6 번 ) int main(void) { int data[3]; int index, min, tmp; scanf("%d %d %d", &data[0], &data[1], &data[2]); for (int i = 0; i data[j]) { min = data[j]; index = j; } } tmp = dat..
[알고리즘] 백준 2750번 문제_단순 정렬
·
알고리즘
단순 정렬 : https://www.acmicpc.net/problem/2750 ================================== 풀이 ==================================== ​ 선택 정렬 : 가장 작은 값은 선택하여 앞으로 보내는 정렬 int main(void) { // 2750번 선택 정렬 int tmp, num,min, index; int data[1000]; scanf("%d", &num); for (int i = 0; i data[j]) { m..
[꿀팁] 네이버에 티스토리 등록하기
·
꿀팁 공유
나의 티스토리가 네이버에 좀더 잘 나오게하는 방법이 있다! 바로 네이버 웹 마스터 도구를 등록하는 것이다. 바로 하는 방법을 알아보자! 0. 준비물 필요한 준비물로는 네이버 계정이 필요하다! 1. 네이버 웹마스터 도구 이동 네이버에 " 네이버 웹마스터 도구 " 라고 검색하면 제일 상단에 네이버 서치어드바이저가 나온다. 이게 바로 우리에게 필요한 사이트이다! => 검색하기 귀찮으실테니 링크 네이버 서치어드바이저 네이버 서치어드바이저와 함께 당신의 웹사이트를 성장시켜보세요 searchadvisor.naver.com 2. 사이트 등록 웹마스터 도구라는 버튼을 클릭해서 페이지를 이동하자! 사이트 등록이라는 화면이 나올텐데, 여기서 " 이곳에 URL을 입력 ... 모시껭이 " 부분에 우리의 티스토리 주소창을 복사..
[알고리즘] 퀵 정렬_구현
·
알고리즘/풀이 힌트
퀵 정렬 : 하나의 큰 문제를 두 개의 작은 문제로 분할하는 식으로 빠르게 정렬 #include int num = 10; int data[10] = { 1, 10, 5, 8, 7, 6, 4, 3, 2, 9 }; int main(void) { quickSort(data, 0, num - 1); for (int i = 0; i = ed) return; // st > ed : 값이 원래 자리에 들어간 경우 // ( ex_ 정렬된 값 1 2 3 5 6 7 8 9 10 1은 이미 정렬이 되어있다. int key = st; // 그러므로 quickSo..
[알고리즘] 퀵 정렬_원리
·
알고리즘/풀이 힌트
앞서 배운 선택 정렬 , 버블 정렬, 삽입정렬 알고리즘 모두 시간 복잡도 O(N ^ 2)를 가지는 알고리즘이다. 이러한 알고리즘은 데이터의 갯수가 10만 개만 넘어가도 일반적인 상황에서는 매우 사용하기 어려운 알고리즘이다. ​ 퀵 정렬 : 하나의 큰 문제를 두 개의 작은 문제로 분할하는 식으로 빠르게 정렬 -> 특정한 값을 기준으로 큰 숫자와 작은 숫자를 서로 교환한 뒤 배열을 반으로 나눈다. ​ 퀵 정렬은 특정한 기준 값이 있는데 이를 피벗이라고 하며 피벗값을 기준으로 왼쪽과 오른쪽으로 나눈다. 퀵 정렬의 예 3 7 8 1 5 9 6 10 2 4 피벗 값(일반적으로 가장 앞에있는 값) : 3 3 2 8 1 5 9 6 10 7 4 검색했을 때 3보다 큰 7과 N이 1,000,000일 때 ? N : 20
[알고리즘] 삽입 정렬
·
알고리즘/풀이 힌트
삽입 정렬 : 각 숫자를 적절한 위치에 삽입하는 정렬 방법 ​ 1 10 5 8 7 6 4 3 2 9 를 오름차순으로 정렬하시오 int main(void) { int i, j, tmp; int array[10] = { 1,10,5,8,7,6,4,3,2,9 }; for (int i = 0; i array[j + 1]) { tmp = array[j]; array[j] = array[j + 1]; array[j + 1] = tmp; j--; } } for (i = 0; i < 10; i++) { printf("%d\n", array[i]); } return 0; } 삽입 정렬은 필요할 때만 위치를 바꾸는 특성이 있다. ​ 삽입정렬..
[알고리즘] 버블정렬
·
알고리즘/풀이 힌트
버블 정렬 : 옆에 있는 값과 비교해서 더 작은 값을 반복적으로 앞으로 내보내는 알고리즘 ​ 1 10 5 8 7 6 4 3 2 9 를 오름차순으로 정렬하시오 int main(void) { int i, j, tmp; int array[10] = { 1,10,5,8,7,6,4,3,2,9 }; for (i = 0; i array[j + 1]) { tmp = array[j]; array[j] = array[j + 1]; array[j + 1] = tmp; } } } for (i = 0; i < 10; i++) { printf("%d\n", array[i]); } return 0; } 1 10 5 8 7 6 4..