본문 바로가기
알고리즘 이전/정렬, 이분검색, 결정알고리즘

선택정렬

by hoshi03 2023. 8. 12.

2중for문 시간복잡도 n^2

 

내 풀이

import java.util.*;
import java.io.*;


class Main {
    public int[] solution(int n, int[] arr1){
        int[] arr = arr1;
        for(int i =0; i < arr.length; i++){
            for(int j = i+1; j < arr.length; j++){
                if(arr[i] > arr[j]) {
                    int tmp =0;
                    tmp = arr[i];
                    arr[i] = arr[j];
                    arr[j] =tmp;
                }
            }
        }
        return arr;
    }

    public static void main(String[] args){
        Main T = new Main();
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int[] arr = new int[n];
        for(int i =0; i < n; i++)arr[i] = in.nextInt();

        for(int x : T.solution(n, arr)) System.out.print(x + " ");
    }
}

 

강의 풀이 i를 n-1 까지 돌아서 도는 횟수를 줄이고 idx 변수를 둬서 값 스왑을 마지막에 해주기

 

import java.util.*;
import java.io.*;


class Main {
    public int[] solution(int n, int[] arr1){
        int[] arr = arr1;
        for(int i =0; i < arr.length-1; i++){
            int idx = i;
            for(int j = i+1; j < arr.length; j++){
                if(arr[idx] > arr[j]) {
                    idx = j;
                }
            }
            int tmp = arr[i];
            arr[i] = arr[idx];
            arr[idx] = tmp;
        }
        return arr;
    }

    public static void main(String[] args){
        Main T = new Main();
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int[] arr = new int[n];
        for(int i =0; i < n; i++)arr[i] = in.nextInt();

        for(int x : T.solution(n, arr)) System.out.print(x + " ");
    }
}

'알고리즘 이전 > 정렬, 이분검색, 결정알고리즘' 카테고리의 다른 글

장난꾸러기  (0) 2023.08.13
중복탐색  (0) 2023.08.13
LRU  (0) 2023.08.13
삽입정렬  (0) 2023.08.13
버블정렬  (0) 2023.08.12