[알고리즘] 선택정렬

SangDosa·2024년 7월 15일

알고리즘

목록 보기
4/7

선택 정렬

리스트 내에 있는 수들 중에서 최솟값을 첫번째에 넣고, 그 다음 값들에 대해서 두번째에 넣고 ..... 하는 행위들을 반복해서 진행하는 정렬 방식

해당 정렬 알고리즘에는 과정이 있다.

  1. 주어진 배열 중 최솟값을 찾는다.
  2. 그 값을 배열 내에 있는 가장 앞 값과 위치를 변경한다.
  3. 가장 앞 값을 제외한 배열 내에서 1~2 과정을 반복한다.

소스

작성 언어: java

public static int[] calc(int[] list){
    int list_len = list.length;
    
    for(int i = 0; i < list_len; i++){
        int now_num = list[i];
    
        // 최솟값을 찾아야 하는 리스트
        int[] findList = Arrays.copyOfRange(list, i, list_len);
        
        int min = 1000000;
        int min_count = 0;
        int findList_len = findList.length;
        
        // 최솟값과 최솟값의 순번 구하기
        for(int j = 0; j < findList_len; j++){
            if(findList[j] < min) {
                min = findList[j];
                min_count = j;
            }
        }
        
        // 최솟값과 i 값 스왑
        list[i] = list[min_count + i];
        list[min_count + i] = now_num;
    }
    
    return list;
} 

참고

https://gmlwjd9405.github.io/2018/05/06/algorithm-selection-sort.html

profile
조용한 개발자

0개의 댓글