UTF-404

Quick Sort ๊ตฌํ˜„(Java) ๋ณธ๋ฌธ

ํ”„๋กœ์ ํŠธ

Quick Sort ๊ตฌํ˜„(Java)

UTF-404 2024. 3. 1. 16:14
728x90

๐Ÿ’ก Quick Sort ๋ž€?

โžก๏ธ ํ€ต ์ •๋ ฌ(Quicksort)์€ ์ฐฐ์Šค ์•คํ„ฐ๋‹ˆ ๋ฆฌ์ฒ˜๋“œ ํ˜ธ์–ด๊ฐ€ ๊ฐœ๋ฐœํ•œ ๋ฒ”์šฉ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

๋‹ค๋ฅธ ์›์†Œ์™€์˜ ๋น„๊ต๋งŒ์œผ๋กœ ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋น„๊ต ์ •๋ ฌ์— ์†ํ•œ๋‹ค.

ํ€ต ์ •๋ ฌ์€ n๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•  ๋•Œ, ์ตœ์•…์˜ ๊ฒฝ์šฐ์—๋Š” O(n^2)๋ฒˆ์˜ ๋น„๊ต๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ , ํ‰๊ท ์ ์œผ๋กœ O(n log n)๋ฒˆ์˜ ๋น„๊ต๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.

 

๋ถ„๋ฅ˜ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜
์ž๋ฃŒ ๊ตฌ์กฐ ๋ฐฐ์—ด
์ตœ์•… ์‹œ๊ฐ„๋ณต์žก๋„ O(n^2)
์ตœ์„  ์‹œ๊ฐ„๋ณต์žก๋„ O(n log n)
ํ‰๊ท  ์‹œ๊ฐ„๋ณต์žก๋„ O(n log n)

 

<์ฐธ๊ณ >

https://ko.wikipedia.org/wiki/%ED%80%B5_%EC%A0%95%EB%A0%AC

 

ํ€ต ์ •๋ ฌ - ์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „

์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „. ํ€ต ์ •๋ ฌ(Quicksort)์€ ์ฐฐ์Šค ์•คํ„ฐ๋‹ˆ ๋ฆฌ์ฒ˜๋“œ ํ˜ธ์–ด๊ฐ€ ๊ฐœ๋ฐœํ•œ ๋ฒ”์šฉ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ๋‹ค๋ฅธ ์›์†Œ์™€์˜ ๋น„๊ต๋งŒ์œผ๋กœ ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋น„๊ต ์ •๋ ฌ์— ์†ํ•œ๋‹ค. ํ€ต ์ •๋ ฌ์€ n๊ฐœ

ko.wikipedia.org

 

๐Ÿ’ก Quick Sort ๊ตฌํ˜„ - Java Code

import java.util.*;

public class Quick_Sort {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int n = sc.nextInt();
	    int arr[] = new int[n];
	    
	    for(int i=0; i<n; i++) {
	    	arr[i] = sc.nextInt();
	    }
	    quick1(arr);
	    
        print(arr);
	    sc.close();
	  }

	  public static void quick1(int[] arr) {
	    quick2(arr, 0, arr.length - 1);
	  }

	  private static void quick2(int[] arr, int left, int right) {
	    
	    if (left >= right)
	      return;

	    int pivot = left;
	    int lo = left + 1;
	    int hi = right;
	    
	    while (lo <= hi) {
	      while (lo <= right && arr[lo] <= arr[pivot]) 
	        lo++;
	      while (hi > left && arr[hi] >= arr[pivot]) 
	        hi--;
	      if (lo > hi)				 
	        swap(arr, hi, pivot);
	      else
	        swap(arr, lo, hi);			 
	      }
		
	    quick2(arr, left, hi - 1);
	    quick2(arr, hi + 1, right);

	  }
	  private static void swap(int[] arr, int i, int j) {
	    int temp = arr[i];
	    arr[i] = arr[j];
	    arr[j] = temp;
	  }
	  public static void print(int[] a) {
	        for (int i=0;i<a.length;i++)
	            System.out.print(a[i]+" ");
	        System.out.println();
	    }
}

 

 

๐Ÿ“ Test Case ์ถœ๋ ฅ ํ™•์ธ

Quick Sort Test case ํ™•์ธ!!

728x90