Java

정렬 알고리즘 : 단순 선택 정렬

충 민 2022. 7. 18. 11:03

최솟값을 찾아서 가장 맨앞자리에 고정시킨다 -이 행위 반복

import java.util.Scanner;

public class Main {

	private static int cnt=0;//비교횟수
	private static int swapcnt=0;
	private static int tmp;
	static void swap(int[]arr,int a1,int a2) {
		int t =arr[a1];
		arr[a1]=arr[a2];
		arr[a2]=t;
	}
	static void selectionSort(int []arr) {
	for(int i=0; i<arr.length-1;i++) {
		int min=i;
		for(int j=i+1;j<arr.length;j++) {
			if(arr[j]<arr[min]) {
				min=j;
			
			}	cnt++;
		}swap(arr,i,min);swapcnt++;
	}
	}
	

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Scanner sc=new Scanner(System.in);
	
		int []arr = new int[] {6,4,3,7,1,9,8} ;
		
	
		for(int i=0;i<arr.length;i++) {
			System.out.println("정렬전:"+arr[i]);
		}
		System.out.println("-------------------");
		
		selectionSort(arr);
		
		for(int i=0;i<arr.length;i++) {
			System.out.println("정렬후:"+arr[i]);
		}
System.out.println(swapcnt+", "+cnt);
	}



}