Java

정렬 알고리즘 : 셸 정렬

충 민 2022. 7. 18. 16:01

import java.util.Scanner;

public class Main {

	private static int cnt=0;//비교횟수
	private static int swapcnt=0;

	static void swap(int[]arr,int a1,int a2) {
		int t =arr[a1];
		arr[a1]=arr[a2];
		arr[a2]=t;
	}
	static void shellSort(int []arr) {
		for(int h=arr.length/2;h>0;h/=2)//8,4,2
			for(int i=h;i<arr.length/h;i++) {
				for(int j=0;j<arr.length-h;j++) {
					if(arr[j+h]<arr[j]) {
						swap(arr,j,j+h);
						cnt++;
					}
				}
			}
	}
	
	

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

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



}