2-3) [C] 퀵정렬(Quick Sort)

2021. 11. 8. 23:25·Algorithm/백준

1) 퀵 정렬이란?

기준이 되는 수(pivot)를 수열 안에서 임의로 선택한 후 'pivot 보다 작은 수'와 'pivot 이상인 수'의 두 그룹으로 나누고 이것을 배치

2) 퀵 정렬의 시간복잡도

각 층에서 각 숫자는 pivot과 1회만 비교되므로 한 층의 계산 시간은 O(n)이 되고, 전체 계산 시간은  O(n log n)이다.

3) 퀵 정렬 구현

#include <stdio.h>

void quickSort(int* data, int start, int end) {
	if (start >= end) {
		return;
	}
	int pivot = start;
	int i = start + 1;
	int j = end;
	int temp;

	while (i <= j) { // 엇갈릴 때까지
		while (i <= end && data[i] <= data[pivot]) // 피벗 보다 큰 값을 만날 때까지
			i++;
		while (j > start && data[j] >= data[pivot]) // 피벗 보다 작은 값을 만날 때까지
			j--;
		if (i > j) { // 엇갈리면 피벗과 교체
			temp = data[j];
			data[j] = data[pivot];
			data[pivot] = temp;
		}
		else { // 엇갈리지 않으면
			temp = data[i];
			data[i] = data[j];
			data[j] = temp;
		}
	}
	quickSort(data, start, j - 1);
	quickSort(data, j + 1, end);
}

int main() {
	int arr[10] = { 4, 9, 1, 6, 11, 10, 3, 15, 2, 13 };
	quickSort(arr, 0, 9);
	for (int i = 0; i < 10; i++)
		printf("%d ", arr[i]);
        
	return 0;
}

결과화면

1 2 3 4 6 9 10 11 13 15

 

 

 

반응형
'Algorithm/백준' 카테고리의 다른 글
  • [5-1] Stack
  • 2-4) [C] 계수 정렬(Counting Sort)
  • 2-2)[C] 병합 정렬(Merge Sort)
  • 2-1) [C] 힙 정렬(Heap Sort)
수영하는 두루미
수영하는 두루미
한국체육대학교에서 스포츠 AI빅데이터를 공부하고 있습니다. B.S. Computer Science
  • 수영하는 두루미
    두루미의 스포츠 데이터분석실
    수영하는 두루미
  • 전체
    오늘
    어제
    • 분류 전체보기 (94)
      • 스포츠 AI·빅데이터(2024~) (21)
        • 2024-2 (0)
        • 빅데이터기반 스포츠경기분석 (10)
        • 스포츠와 소셜텍스트분석 (4)
        • 영상기반 데이터 수집기법 (3)
        • 2025-1 (0)
        • 스포츠와 AI 모델링 기초 (0)
        • 스포츠와 프로그램 코딩(Python) (0)
        • 운동역학 (0)
        • 2025-2 (0)
        • 스포츠 AI빅데이터 연구 세미나 (1)
        • 스포츠 딥러닝 (0)
        • 운동생리학 (0)
        • etc. (0)
      • Data (13)
        • ADsP (1)
        • SQLD (1)
        • 빅데이터분석기사 (4)
        • ADP(데이터분석 전문가) (5)
        • 키다리아저씨(2021.12.05~) (2)
        • 파이썬 자격과정(2021.07.22-23) (0)
      • 정보처리기사 (1)
      • CSTS (10)
      • 블록체인과 암호화폐 (0)
        • 블록체인 (0)
      • Algorithm (44)
        • 백준 (42)
        • 자료구조 (2)
      • CSOS (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    경험기반테스트
    명세기반테스트
    구조기반테스트
    스포츠데이터
    빅데이터분석기사
    알고리즘
    자료구조
    데이터분석
    정적테스트
    백준
    한체대
    heapsort
    한체대대학원
    csts
    C언어
    스포츠데이터분석
    스포츠ai빅데이터
    동적테스트
    Python
    스포츠빅데이터
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
수영하는 두루미
2-3) [C] 퀵정렬(Quick Sort)
상단으로

티스토리툴바