Skip to content

Instantly share code, notes, and snippets.

@bho7982
Created March 25, 2017 05:25
Show Gist options
  • Save bho7982/b15b6f4da0715fa1c415a9cde52c0ebc to your computer and use it in GitHub Desktop.
Save bho7982/b15b6f4da0715fa1c415a9cde52c0ebc to your computer and use it in GitHub Desktop.
C++에 배열을 생성하고 섞은뒤, 이를 다시 퀵정렬로 정렬한다.
#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