[알고리즘 구현] SelectionSort

후이재·2020년 8월 30일
1
post-thumbnail

Alg동작 원리

  1. 전체 데이터에서 가장 작은값을 고른다.
  2. 그 값을 temp(result) 배열에 저장
  3. 해당 값을 삭제한다.
  4. temp 배열을 다 채울 때 까지 반복

코드(Java)

import java.util.Arrays;

public class SelectionSort {

	public static void main(String[] args) {
		int[] data = { 58, 8, 28, 3, 18, 6, 33, 20 };
		selectionSort(data);
		System.out.println(Arrays.toString(data));
	}

	public static void selectionSort(int[] data) {
		int[] result = new int[data.length];
		int count = 0;
		int min = 0;
		int minValue = Integer.MAX_VALUE;
		while (count < result.length) {
			for (int i = 0; i < data.length; i++) {
				if (data[i] != -1) {
					if (data[i] < minValue) {
						min = i;
						minValue = data[i];
					}
				}
			}
			result[count++] = minValue;
			data[min] = -1;
			minValue = Integer.MAX_VALUE;
		}
		for (int i = 0; i < data.length; i++) {
			data[i] = result[i];
		}
	}
}

코드(C++)

void selectionSort(){
    const int INF = 987654321;
    int temp[MAX];
    int count = 0;
    int minIdx = 0;
    while(count != n){
        for(int i=0;i<n;i++){
            if(arr[i] < arr[minIdx]){
                minIdx = i;
            }
        }
        temp[count++] = arr[minIdx];
        arr[minIdx] = INF;
    }
    for(int i=0;i<n;i++)
        arr[i] = temp[i];
}
profile
공부를 위한 벨로그

0개의 댓글