Created
March 25, 2017 05:25
-
-
Save bho7982/b15b6f4da0715fa1c415a9cde52c0ebc to your computer and use it in GitHub Desktop.
C++에 배열을 생성하고 섞은뒤, 이를 다시 퀵정렬로 정렬한다.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#define MAX_SIZE 100 | |
int S[MAX_SIZE]; | |
void exchange(int a, int b) | |
{ | |
int Save = S[a]; | |
S[a] = S[b]; | |
S[b] = Save; | |
} | |
void partition(int low, int high, int& pivotpoint) { | |
int i, j; | |
int pivotitem; | |
pivotitem = S[low]; //pivotitem을 위해 첫번째 항목을 선택 | |
j = low; | |
for (i = low + 1; i <= high; ++i) | |
if (S[i] < pivotitem) { | |
++j; | |
exchange(i, j); | |
} | |
pivotpoint = j; | |
exchange(low, pivotpoint); //pivotitem 값을 pivotpoint에 넣음 | |
} | |
void quicksort(int low, int high) { | |
int pivotpoint; | |
if (high > low) { | |
partition(low, high, pivotpoint); // 분할 | |
quicksort(low, pivotpoint - 1); // 정복 | |
quicksort(pivotpoint + 1, high); // ” | |
} | |
} | |
int main() | |
{ | |
//랜덤 배열 생성 | |
for (int i = 0; i < MAX_SIZE; i++) | |
{ | |
S[i] = i; | |
} | |
for (int j = 0; j < MAX_SIZE; j++) | |
{ | |
int Random_one = rand() % MAX_SIZE; | |
int Random_two = rand() % MAX_SIZE; | |
int Save = S[Random_one]; | |
S[Random_one] = S[Random_two]; | |
S[Random_two] = Save; | |
} | |
quicksort(0, MAX_SIZE-1); | |
for (int q = 0; q < MAX_SIZE; q++) | |
{ | |
printf("%d ",S[q]); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment