새소식

인기 검색어

비트교육_단기과정

정렬알고리즘(버블, 선택, 삽입, 쉘 정렬)

  • -
package week_5;
 
import java.util.Arrays;
import java.util.Scanner;
 
public class SortExam {
    static void swap(int[] a, int idx1, int idx2) {
        int t = a[idx1];
        a[idx1] = a[idx2];
        a[idx2] = t;
    }
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[] arr = new int[] { 81427635 };
        System.out.println("1. 버블   2.단순 삽입  3.선택삽입  4.쉘 정렬");
        switch (sc.nextInt()) {
        case 1:
            bubbleSort(arr);
            break;
        case 2:
            straightSelectionSort(arr);
            break;
        case 3:
            straightInsertionSort(arr);
            break;
        case 4:
            shellSort(arr);
        default:
            break;
        }
    }
 
    static void bubbleSort(int[] arr) {
        for (int i = 0; i < arr.length - 1; i++) {
            int changeCnt = 0;
            for (int j = arr.length - 1; j > i; j--) {
                if (arr[j - 1> arr[j]) {
                    swap(arr, i, j);
                    changeCnt++;
                }
            }
 
            if (changeCnt == 0)// 요소교환이 더이상 일어나지않는다면 모든 요소들이 정렬된것이라 판단
                break;
        }
        System.out.println(Arrays.toString(arr));
    }
 
    static void straightSelectionSort(int[] arr) {
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = i; j > 0; j--) {
                if (arr[j] < arr[j - 1]) {
                    swap(arr, j, j - 1);
                }
                if (i == arr.length - 2) {
                    swap(arr, i, i + 1);
                }
            }
        }
        System.out.println(Arrays.toString(arr));
    }
 
    static void straightInsertionSort(int[] arr) {
        for (int i = 0; i < arr.length - 1; i++) {
            int index = i;
            for (int j = i + 1; j < arr.length; j++) {
                if (arr[j] < arr[index]) {
                    index = j;// 1,3,4
                }
            }
            swap(arr, i, index);
        }
        System.out.println(Arrays.toString(arr));
    }
 
    static void shellSort(int[] arr) {
        int index = arr.length;// 8
        while ((index /= 2> 0) {// 4,2,1
            for (int j = 0; j < arr.length / index; j++) {// 01,0123,01234567
                int indexShell = j;
                for (int i = j + index; i < (arr.length / index); i++) {// 반복 횟수 => 2,4,8
                    System.out.println(index + " : " + j + " : " + i);
                    if (arr[indexShell] > arr[i]) {
                        indexShell = i;
                    }
                }
                swap(arr, j, indexShell);
            }
        }
        System.out.println(Arrays.toString(arr));
    }
}
 
cs
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.