๐Ÿ“• ๊ธฐ์ค€์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌ

์ •๋ ฌ์ด๋ž€ ๋ฐ์ดํ„ฐ๋ฅผ ํŠน์ •ํ•œ ๊ธฐ์ค€์— ๋”ฐ๋ผ์„œ ์ˆœ์„œ๋Œ€๋กœ ๋‚˜์—ดํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•˜๋ฉด ์ด์ง„ ํƒ์ƒ‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

  • ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ์€ ์˜ค๋ฆ„์ฐจ์ˆœ์˜ ๋ฐ˜๋Œ€๋กœ ํ•˜๋ฉด ๋œ๋‹ค.

๐Ÿ“œ ์„ ํƒ์ •๋ ฌ

๊ฐ€์žฅ ์ž‘์€ ๊ฒƒ์„ ์„ ํƒํ•ด์„œ ์•ž์œผ๋กœ ๋ณด๋‚ด๋Š” ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•ด์„œ ์ˆ˜ํ–‰ํ•˜๋ฉด, ์ „์ฒด ๋ฐ์ดํ„ฐ์˜ ์ •๋ ฌ์ด ์ด๋ฃจ์–ด์ง„๋‹ค.

  • N๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•˜๊ณ  ๋งˆ์ง€๋ง‰ N - 1๋ฒˆ์งธ ๋ฐ์ดํ„ฐ๋Š” ์–ด์ฐจํ”ผ ์ •๋ ฌ์ด ๋˜์–ด์žˆ๋‹ค.
    • ๋”ฐ๋ผ์„œ ๊ฐ€์žฅ ์ž‘์€ ๋ฐ์ดํ„ฐ๋ฅผ ์•ž์œผ๋กœ ๋ณด๋‚ด๋Š” ๊ณผ์ •์„ N - 1๋ฒˆ ๋ฐ˜๋ณตํ•˜๋ฉด ์ •๋ ฌ์ด ๋˜์–ด์žˆ๋‹ค.
import java.util.*;

public class Main {
	public static void main(String[] args) {
    	int n = 3;
        int[] arr = {7, 5, 9, 0, 3, 1, 6, 2, 4, 8};
        
        for (int i = 0; i < n; i++) {
        	int min_index = i; // ๊ฐ€์žฅ ์ž‘์€ ์›์†Œ์˜ ์ธ๋ฑ์Šค
            for (int j = i + 1; j < n; < j++) {
            	if (arr[min_index] > arr[j]) min_index = j;
            }
        }
        
        // ์Šค์™€ํ”„
        int temp = arr[i];
        arr[i] = arr[min_index];
        arr[min_index] = temp;
    }
    
    for (int i = 0; i < n; i ++) System.out.print(arr[i] + " ");
}

๐Ÿ”” ์Šค์™€ํ”„

import java.util.*;

public class Main {

    public static void main(String[] args) {

        int[] arr = {3, 5};

        // ์Šค์™€ํ”„(Swap)
        int temp = arr[0];
        arr[0] = arr[1];
        arr[1] = temp;

        System.out.println(arr[0] + " " + arr[1]);
    }

}

๐Ÿ”” ์„ ํƒ ์ •๋ ฌ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„

์„ ํƒ ์ •๋ ฌ์€ ์•ž์—์„œ๋ถ€ํ„ฐ ํ•œ ์š”์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ๋ฐ˜๋ณต์ ์œผ๋กœ ์ญ‰ ํƒ์ƒ‰์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— O(N^2)์ด๋‹ค

  • ๋ฌธ์ œ ํ’€์ด์—๋Š” ๋А๋ฆฐ ํŽธ์ด๋‹ค.

๐Ÿ“œ ์‚ฝ์ž…์ •๋ ฌ

์‚ฝ์ž…์ •๋ ฌ์€ ํŠน์ •ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ ์ ˆํ•œ ์œ„์น˜์— ๋“ค์–ด๊ฐ€๊ธฐ ์ด์ „์—, ๊ทธ ์•ž๊นŒ์ง€์˜ ๋ฐ์ดํ„ฐ๋Š” ์ด๋ฏธ ์ •๋ ฌ๋˜์–ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ ์ ˆํ•œ ์œ„์น˜์— ์‚ฝ์ž…ํ•œ๋‹ค.

  • ๊ฐ€์žฅ ์•ž์˜ ๋ฐ์ดํ„ฐ(์ฒซ๋ฒˆ์งธ)๋Š” ์ •๋ ฌ๋˜์–ด์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.
  • ๊ทธ ๋‹ค์Œ์˜ ๋ฐ์ดํ„ฐ(๋‘๋ฒˆ์งธ)๋ฅผ ์ •๋ ฌ๋˜์–ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ๋’ค์—์„œ๋ถ€ํ„ฐ ์•ž์œผ๋กœ ์ด๋™ํ•˜๋ฉด์„œ ๋น„๊ตํ•˜๋ฉฐ ์ ์ ˆํ•œ ์œ„์น˜์— ์‚ฝ์ž…ํ•œ๋‹ค.
import java.util.*;

public class Main {
	public static void main(String[] args) {
    	int n = 10;
        int[] arr = {7, 5, 9, 0, 3, 1, 6, 2, 4, 8};
        
        for (int i = 1; i < n; i++) {
        	// ์ธ๋ฑ์Šค i๋ถ€ํ„ฐ 1๊นŒ์ง€ ๊ฐ์†Œํ•˜๋ฉฐ ๋ฐ˜๋ณตํ•˜๋Š” ๋ฌธ๋ฒ•
            for (int j = i; j > 0; j--) {
            	// ํ•œ์นธ์”ฉ ์•ž์œผ๋กœ ์ด๋™
                if (arr[j] < arr[j - 1]) {
                	// ์Šค์™€ํ”„
                    int temp = arr[j];
                    arr[j] = arr[j - 1];
                    arr[j - 1] = temp;
                }
            }
            // ์ž๊ธฐ๋ณด๋‹ค ์ž‘์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋‚˜๋ฉด ๊ทธ ์œ„์น˜์—์„œ ๋ฉˆ์ถค
            else break;
        }
    }
    for(int i = 0; i < n; i++) System.out.print(arr[i] + " ");
}

๐Ÿ”” ์‚ฝ์ž… ์ •๋ ฌ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„

์‚ฝ์ž… ์ •๋ ฌ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(N^2)์ž…๋‹ˆ๋‹ค.

  • ๊ผญ ๊ธฐ์–ตํ•  ๋‚ด์šฉ์€ ์‚ฝ์ž…์ •๋ ฌ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฑฐ์˜ ์ •๋ ฌ์ด ๋˜์–ด์žˆ์œผ๋ฉด ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.
    • ๊ทธ๋ž˜์„œ ์ตœ์„ ์˜ ๊ฒฝ์šฐ O(N)์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.
  • ๋”ฐ๋ผ์„œ ๋ณดํ†ต์€ ํ€ต์ •๋ ฌ๋ณด๋‹ค ๋น„ํšจ์œจ์ ์ด์ง€๋งŒ, ์ •๋ ฌ์ด ๋˜์–ด์žˆ๋Š” ๊ฒฝ์šฐ ์‚ฝ์ž…์ •๋ ฌ์ด ๋”์šฑ ๋น ๋ฆ…๋‹ˆ๋‹ค.
    • 2๋ฒˆ์งธ ์—ญ์œผ๋กœ ์ง„ํ–‰ํ•˜๋Š” for๋ฌธ์„ ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๐Ÿ“œ ํ€ต์ •๋ ฌ

๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ๊ธฐ์ค€ ๋ฐ์ดํ„ฐ๋ฅผ ์„ค์ •ํ•˜๊ณ  ๊ทธ ๊ธฐ์ค€๋ณด๋‹ค ํฐ ๋ฐ์ดํ„ฐ์™€ ์ž‘์€ ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๋ฅผ ๊ตํ™˜ํ•˜๊ณ  ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

  • ๋”ฐ๋ผ์„œ Pivot, ๊ธฐ์ค€์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.(์ด์ฝ”ํ…Œ์—์„œ๋Š” ์ฒซ ๋ฒˆ์งธ ๋ฐ์ดํ„ฐ๋ฅผ ํ”ผ๋ฒ—์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.)
  • ๋‘ ๊ฐ’์ด ์„œ๋กœ ์—‡๊ฐˆ๋ฆฌ๊ฒŒ ๋˜๋Š” ๊ณผ์ •์—์„œ๋Š” 2๊ฐœ์˜ ๊ฐ’ ์ค‘ '์ž‘์€ ๊ฐ’'๊ณผ Pivot์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
    • ๋”ฐ๋ผ์„œ Pivot์„ ๊ธฐ์ค€์œผ๋กœ ์™ผ์ชฝ์—๋Š” Pivot๋ณด๋‹ค ์ž‘์€๊ฐ’, ์˜ค๋ฅธ์ชฝ์—๋Š” Pivot๋ณด๋‹ค ํฐ ๊ฐ’์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.
import java.util.*;

public class Main {
	// ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ธ์ž๋“ค์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
    public static void quickSort(int[] arr, int start, int end) {
    	if (start >= end) return; // ์žฌ๊ท€ํ•จ์ˆ˜์˜ ์ข…๋ฃŒ ์กฐ๊ฑด=์›์†Œ๊ฐ€ 1๊ฐœ์ธ ๊ฒฝ์šฐ(start, end ๊ฐ™์„ ๋•Œ)
        int pivot = start;// ํ”ผ๋ฒ—์€ ์ฒซ ๋ฒˆ์งธ ์›์†Œ
        int left = start + 1;
        int right = end;
        while (left <= right) { // ์˜ค๋ฅธ์ชฝ์ด ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ๊ณ„์† ์ง„ํ–‰
        	// ํ”ผ๋ฒ—๋ณด๋‹ค ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต(์„ ํ˜•ํƒ์ƒ‰)
            while (left <= end && arr[left] <= arr[pivot]) left++;
            // ํ”ผ๋ฒ—๋ณด๋‹ค ์ž‘์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต(์„ ํ˜•ํƒ์ƒ‰)
            while (right > start && arr[right] > arr[pivot]) right--;
            
            // ์—‡๊ฐˆ๋ ธ๋‹ค๋ฉด ์ž‘์€ ๋ฐ์ดํ„ฐ์™€ ํ”ผ๋ฒ—์„ ๊ต์ฒด
            if (left > right) {
            	int temp = arr[pivot];
                arr[pivot] = arr[right];
                arr[right] = temp;
            }
            // ์—‡๊ฐˆ๋ฆฌ์ง€ ์•Š์•˜๋‹ค๋ฉด ์ž‘์€ ๋ฐ์ดํ„ฐ์™€ ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ต์ฒด
            else {
            	int temp = arr[left];
                arr[left] = arr[right];
                arr[right] = temp;
            }
        }
        
        // ๋ถ„ํ•  ์ดํ›„ ์™ผ์ชฝ ๋ถ€๋ถ„๊ณผ ์˜ค๋ฅธ์ชฝ ๋ถ€๋ถ„์—์„œ ๊ฐ๊ฐ ์ •๋ ฌ ์ˆ˜ํ–‰(์žฌ๊ท€ ํ˜ธ์ถœ)
        quickSort(arr, start, right - 1); // ์™ผ์ชฝ
        quickSort(arr, right + 1, end); // ์˜ค๋ฅธ์ชฝ
    }
    public static void main(String[] args) {
        int n = 10;
        int[] arr = {7, 5, 9, 0, 3, 1, 6, 2, 4, 8};

        quickSort(arr, 0, n - 1); // ์ฒซ๋ฒˆ์งธ ์›์†Œ๋Š” pivot์ด๊ธฐ ๋•Œ๋ฌธ์— n - 1

        for(int i = 0; i < n; i++) {
            System.out.print(arr[i] + " ");
        }
    }
    

}

๐Ÿ”” ํ€ต์ •๋ ฌ ์žฌ๊ท€ํ˜ธ์ถœ

ํ€ต ์ •๋ ฌ์€ ์žฌ๊ท€ ํ•จ์ˆ˜ ํ˜•ํƒœ๋กœ ์ž‘์„ฑํ–ˆ์„ ๋•Œ ๊ตฌํ˜„์ด ๋งค์šฐ ๊ฐ„๊ฒฐํ•ด์ง‘๋‹ˆ๋‹ค.

  • Pivot์„ ๊ธฐ์ค€์œผ๋กœ ์™ผ์ชฝ ๋ฆฌ์ŠคํŠธ์™€ ์˜ค๋ฅธ์ชฝ ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์—, left๋ฆฌ์ŠคํŠธ์™€ right๋ฆฌ์ŠคํŠธ๋ฅผ ๋”ฐ๋กœ ํ€ต์ •๋ ฌ์„ ํ•ฉ๋‹ˆ๋‹ค.
    • ์ฆ‰, Pivot์„ ๊ธฐ์ค€์œผ๋กœ ์™ผ์ชฝ, ์˜ค๋ฅธ์ชฝ ์žฌ๊ท€ํ˜ธ์ถœ์„ ๊ณ„์†ํ•ด์„œ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”” ํ€ต์ •๋ ฌ ์žฌ๊ท€ํ˜ธ์ถœ์˜ ์ข…๋ฃŒ์กฐ๊ฑด

ํ˜„์žฌ ๋ฆฌ์ŠคํŠธ์˜ ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜๊ฐ€ 1๊ฐœ์ผ ๊ฒฝ์šฐ, ๋ถ„ํ• ์ด ๋ถˆ๊ฐ€๋Šฅํ•จ์œผ๋กœ ์žฌ๊ท€ํ˜ธ์ถœ์ด ์ข…๋ฃŒ๋˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”” ํ€ต์ •๋ ฌ ์‹œ๊ฐ„๋ณต์žก๋„

ํ‰๊ท ์€ Nlog(N), ์ตœ์•…(์ด๋ฏธ ์ •๋ ฌ์ด ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ) O(N^2) ์ด ๊ฒฝ์šฐ๋Š” ์‚ฝ์ž… ์ •๋ ฌ์„ ์‚ฌ์šฉํ•˜์ž

๐Ÿ“œ ๊ณ„์ˆ˜์ •๋ ฌ

ํŠน์ •ํ•œ ์กฐ๊ฑด์ด ๋ถ€ํ•ฉํ•  ๋•Œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋งค์šฐ ๋น ๋ฅธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ N๊ฐœ ์ค‘ ์ตœ๋Œ“๊ฐ’์ด K์ผ ๋•Œ ์ตœ์•…์˜ ๊ฒฝ์šฐ์—๋„ O(N + K)๋ฅผ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ ๋ฒ”์œ„๊ฐ€ ์ œํ•œ๋˜์–ด ์ •์ˆ˜ ํ˜•ํƒœ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์„ ๋•Œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
    • ๋ฐ์ดํ„ฐ์˜ ๊ฐ’์ด ๋ฌดํ•œํ•œ ๋ฒ”์œ„๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์‹ค์ˆ˜ํ˜•์ผ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
    • ๋ฐ์ดํ„ฐ์˜ ํฐ ๊ฐ’๊ณผ ์ž‘์€ ๊ฐ’์˜ ์ฐจ์ด๊ฐ€ 1,000,000์„ ๋„˜์ง€ ์•Š์„ ๋•Œ ํšจ๊ณผ์ ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๋”ฐ๋ผ์„œ 1,000,000 ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์œผ๋ฉด 1,000,001 ํฌ๊ธฐ์˜ ๋ฐฐ์—ด์„ ์„ ์–ธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
      • 1์„ ๋”ํ•˜๋Š” ์ด์œ ๋Š” 0๋„ ํฌํ•จํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
import java.util.*;

public class Main {
	
    public static final int MAX_VALUE = 9; // ๋ฐฐ์—ด์„ ์œ„ํ•œ ๊ณ ์ •๊ฐ’ ์„ธํŒ…

    public static void main(String[] args) {
    	int n = 15;
        // ๋ชจ๋“  ์›์†Œ์˜ ๊ฐ’์ด 0๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค๊ณ  ๊ฐ€์ •
        int[] arr = {7, 5, 9, 0, 3, 1, 6, 2, 9, 1, 4, 8, 0, 5, 2};
        // ๋ชจ๋“  ๋ฒ”์œ„๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฐฐ์—ด ์„ ์–ธ(๋ชจ๋“  ๊ฐ’์€ 0์œผ๋กœ ์ดˆ๊ธฐํ™”)
        int[] count = new int[MAX_VALUE + 1];
        
        for (int i = 0; i < n; i++) count[arr[i]] += 1;
        for (int i = 0; i <= MAX_VALUE; i++) {
        	 // ๋„์–ด์“ฐ๊ธฐ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋“ฑ์žฅํ•œ ํšŸ์ˆ˜๋งŒํผ ์ธ๋ฑ์Šค ์ถœ๋ ฅ
        	for (int j = 0; j < count[i]; j++) System.out.print(i + " ");
        }
    }

}

๐Ÿ”” ๊ณ„์ˆ˜์ •๋ ฌ ํŠน์ง•

๊ฐ€์žฅ ์ž‘์€ ๋ฐ์ดํ„ฐ์™€ ํฐ ๋ฐ์ดํ„ฐ์˜ ๋ฒ”์œ„๋ฅผ ๋ชจ๋‘ ๊ฐ๊ธธ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋‚˜์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์”ฉ ํ™•์ธํ•˜๋ฉด์„œ ๋ฐ์ดํ„ฐ์˜ ๊ฐ’๊ณผ ๋™์ผํ•œ ์ธ๋ฑ์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ 1์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๋ฉด ๋ฉ๋‹ˆ๋‹ค.

  • ๋”ฐ๋ผ์„œ ํ•ด๋‹น ๋ฐฐ์—ด์€ ์ •๋ ฌ๋œ ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค.
  • ๋ฐฐ์—ด์„ ์„ ์–ธํ•˜๋ฉด 0์œผ๋กœ ์ดˆ๊ธฐํ™”๋ฅผ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”” ๊ณ„์ˆ˜์ •๋ ฌ์ด ์ œํ•œ์ด ์žˆ๋Š” ์ด์œ 

๋ชจ๋“  ๋ฐ์ดํ„ฐ์˜ ๋ฒ”์œ„๋ฅผ ๋‹ด์•„์•ผํ•˜๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ์„ ์–ธํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๐Ÿ”” ๊ณ„์ˆ˜์ •๋ ฌ ์‹œ๊ฐ„๋ณต์žก๋„

๋ฐ์ดํ„ฐ N๊ฐœ, ๋ฐ์ดํ„ฐ ์ค‘ ์ตœ๋Œ“๊ฐ’ K๋ฉด O(N +K)๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

  • ํ˜„์กดํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘์—์„œ ๊ฐ€์žฅ ๋น ๋ฆ…๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ์˜ ๋ฒ”์œ„๋งŒ ํ•œ์ •๋˜์–ด ์žˆ๋‹ค๋ฉด ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ”” ๊ณ„์ˆ˜์ •๋ ฌ ๊ณต๊ฐ„๋ณต์žก๋„

๊ณ„์ˆ˜์ •๋ ฌ์€ ๋™์ผํ•œ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ๋“ฑ์žฅํ•  ๋•Œ ์ ํ•ฉํ•˜๋‹ค.
๋‹จ์ ์€ ๋งŒ์•ฝ ๋ฐ์ดํ„ฐ๊ฐ€ 0, 9999 ๋‹จ 2๊ฐœ์ผ ๊ฒฝ์šฐ๋ฅผ ์ƒ๊ฐํ•ด๋ณด์ž. 10000๊ฐœ์˜ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค. ๋น„ํšจ์œจ์ ์ด๋‹ค.

  • ๊ณ„์ˆ˜์ •๋ ฌ์€ ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๊ฐ€ ํ•œ์ •๋˜์–ด ์žˆ๊ณ , ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๊ฐ€ ๋งŽ์ด ์ค‘๋ณต๋˜์–ด ์žˆ์„์ˆ˜๋ก ์œ ๋ฆฌํ•˜๋‹ค.

๐Ÿ“œ ์ž๋ฐ” ์ •๋ ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ธฐ๋ณธ ์˜ˆ์ œ

import java.util.*;

public class Main {

    public static void main(String[] args) {
    	
        int n = 10;
        int[] arr = {7, 5, 9, 0, 3, 1, 6, 2, 4, 8};

        Arrays.sort(arr);

        for(int i = 0; i < n; i++) {
            System.out.print(arr[i] + " ");
        }
    }

}

๐Ÿ“œ ์ž๋ฐ” ์ •๋ ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ‚ค(Key) ๊ธฐ์ค€ ์ •๋ ฌ ์˜ˆ์ œ

import java.util.*;

class Fruit implements Comparable<Fruit> {
	private String name;
   	private int score;
    
    public Fruit(String name, int score) {
        this.name = name;
        this.score = score;
    }

    public String getName() {
        return this.name;
    }

    public int getScore() {
        return this.score;
    }
    
    // ์ •๋ ฌ ๊ธฐ์ค€์€ '์ ์ˆ˜๊ฐ€ ๋‚ฎ์€ ์ˆœ์„œ'
    @Override
    public int compareTo(Fruit other) {
    	if (this.score < other.score) return -1; // ์—ญ์ˆœ์œผ๋กœ ์ •๋ ฌ
        return 1;
    }
}

public class Main {

    public static void main(String[] args) {
        List<Fruit> fruits = new ArrayList<>();
        
        fruits.add(new Fruit("๋ฐ”๋‚˜๋‚˜", 2));
        fruits.add(new Fruit("์‚ฌ๊ณผ", 5));
        fruits.add(new Fruit("๋‹น๊ทผ", 3));

        Collections.sort(fruits);
        
        for (int i = 0; i < fruits.size(); i++) {
            System.out.print("(" + fruits.get(i).getName() + "," + fruits.get(i).getScore() + ") ");
        }
    }
}

์ฐธ์กฐ

https://velog.io/@dongchyeon/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EC%84%A0%ED%83%9D-%EC%A0%95%EB%A0%AC-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98
.
https://devjin-blog.com/sort-algorithm-3/
.
https://gmlwjd9405.github.io/2018/05/10/algorithm-quick-sort.html
.
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=k_blomkv&logNo=221137056088

profile
ํ˜„์žฌ ๋ธ”๋กœ๊ทธ : https://jasonsong97.tistory.com/

0๊ฐœ์˜ ๋Œ“๊ธ€