티스토리 뷰

반응형

개발자의 C언어 독학 기초 # 응용 / 퀵정렬

 

모든 강의 자료 : www.codingnow.co.kr/

퀵 정렬

#include <stdio.h>
#include <windows.h> //system 명령 실행을 위해

//퀵정렬
//define으로 함수를 설정할 수 있다. (SWAP 함수 설정)
#define SWAP(x,y,t) ((t)=(x), (x)=(y), (y)=(t)) 
int partition(int var[], int left, int right)
{
    int pivot=var[left];
	int tmp;
	int low=left;
	int high=right+1;
 
    do{
        do{
			low++;
        }while(low<=right && var[low]<pivot);
 
        do{
			high--;
        }while(high>=left && var[high]>pivot);
		
        if(low<high){
			SWAP(var[low], var[high], tmp);
		}
    }while(low<high);
 
    SWAP(var[left], var[high], tmp);
    return high;
}
void QuickSort(int var[], int left, int right)
{
    if(left<right)
    {
        int q=partition(var, left, right);
        QuickSort(var, left, q-1);
        QuickSort(var, q+1, right);
    }
}

void main(void)
{
	system("chcp 65001"); //gcc 한글 깨짐
	system("cls"); //화면지움
	
	int TargetArr[10] = { 7, 2, 3, 5, 4, 8, 6, 9, 10, 1 };
//정렬하기전 값 출력

	printf("\n정렬 전 : ");
    for (int i = 0; i < 10; i++)
    {
        printf("%d ", TargetArr[i]);
    }
	
	QuickSort(TargetArr, 0, 10);//정렬 함수 호출

    printf("\n\n");
	printf("정렬 후 : ");
    for (int i = 0; i < 10; i++)
    {
        printf("%d ", TargetArr[i]);
    }

    printf("\n\n");
	
	return;
}

 

반응형