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);
}
}