HOWTO · Java

sort() 메서드를 사용하지 않고 Java에서 배열 정렬

sort() 메소드를 사용하지 않고 Java에서 배열을 정렬하는 방법 배우기

이 가이드는 sort() 메소드를 사용하지 않고 Java에서 배열을 정렬하는 방법을 알려줍니다. 일반적으로 배열을 정렬하는 세 가지 방법이 있습니다. 이 세 가지 알고리즘은 모든 배열을 정렬하는 데 매우 효율적입니다. 이러한 알고리즘에 대해 자세히 알아보겠습니다.

sort() 메소드를 사용하지 않고 Java에서 배열 정렬 - 버블 정렬

가장 간단한 정렬 알고리즘인 버블 정렬의 개념을 이해합시다. 기본적으로 이 알고리즘에서는 배열의 인접한 요소를 반복적으로 교체합니다. 순서가 잘못된 경우 알고리즘은 두 요소를 교환합니다. 프레젠테이션을 살펴보십시오.

sort() 메서드를 사용하지 않고 Java에서 배열 정렬 - 버블 정렬

위에 제공된 그림을 보면 인접한 두 요소가 서로 바뀌는 것을 볼 수 있습니다. 결국 정렬된 배열이 있습니다. 헷갈리는 부분이 있다면 이 버블 정렬 알고리즘의 코드를 살펴보세요.

public class Main {
  public static void main(String[] args) {
    int[] arr = new int[] {5, 4, 3, 8, 32, 768, 564, 95, 172, 1500, 859, 754};
    // Example Array To sort...
    for (int i = 0; i < arr.length; i++) { // Loop over java Array  outer Loop use
      for (int j = i + 1; j < arr.length; j++) { // Loop over java array
        int tmp = 0; // tempraory variable in order to compare.
        if (arr[i] > arr[j]) { // compare outer loop object with inner loop
          tmp = arr[i]; // if greater than swapping.
          arr[i] = arr[j]; // Swaping code here.
          arr[j] = tmp;
        }
      }
    }
    // After Sorting Printing The Value.............

    for (int i = 0; i < arr.length; i++) {
      System.out.println(arr[i]);
    }
  }
}

출력:

3
4
5
8
32
95
172
564
754
768
859
1500

외부 루프는 배열을 통과하기 위한 것이며 내부 루프는 각 패스에서 순서가 지정되지 않은 인접한 요소를 교환합니다. 마지막 패스가 끝나면 정렬된 배열이 남습니다.

sort() 메소드를 사용하지 않고 Java에서 배열 정렬 - 선택 정렬

선택 정렬 알고리즘은 배열에서 최소 요소를 검색하고 해당 배열의 시작 부분에 배치하여 작동합니다. 각 패스에서 다음으로 가장 작은 요소를 찾아 다음에 배치합니다. 결국 두 개의 하위 배열이 있는 배열을 얻습니다. 하나의 하위 배열은 배열의 시작 부분에 있는 정렬된 배열입니다. 다른 하위 배열은 정렬되지 않은 하위 배열입니다.

각 패스에서 오름차순으로 이동합니다. 가장 큰 요소를 먼저 찾으면 내림차순으로 이동합니다. 아래 그림을 살펴보십시오.

sort() 메서드를 사용하지 않고 Java에서 배열 정렬 - 선택 정렬

위의 그림에서 움직임은 내림차순이며 가장 큰 요소를 먼저 찾아 끝에 배치합니다. 프레젠테이션은 위에서 설명한 것처럼 어레이가 두 개의 하위 어레이로 분할된 것을 보여줍니다.

public class Main {
  public static void main(String[] args) {
    int[] arr1 = new int[] {5, 4, 3, 8, 32, 768, 564, 95, 172, 1500, 859, 754};
    int small = -1; // at start there is no small  number....
    for (int i = 0; i < arr1.length; i++) {
      small = i;
      for (int j = i; j <= arr1.length - 1; j++) {
        if (arr1[j] < arr1[small]) {
          small = j;
        }
        // swap values
      }
      int temp = arr1[i];
      arr1[i] = arr1[small];
      arr1[small] = temp;
    }

    for (int i = 0; i < arr1.length; i++) {
      System.out.println(arr1[i]);
    }
  }
}

위의 코드 예제에서 외부 루프는 배열을 전달하는 역할을 합니다. 내부 루프는 가장 작은 요소를 현재 인덱스의 요소와 교환합니다.

sort() 메소드를 사용하지 않고 Java에서 배열 정렬 - 삽입 정렬

삽입 정렬은 배열을 정렬하는 데 사용할 수 있는 또 다른 간단한 정렬 알고리즘입니다. 이 알고리즘에서 주어진 배열도 두 개의 하위 배열로 나뉩니다. 그러나 선택 정렬과 달리 요소는 정렬되지 않은 하위 배열에서 선택되어 올바른 위치에 배치됩니다. 아래의 그림 설명을 살펴보십시오.

sort() 메서드를 사용하지 않고 Java에서 배열 정렬 - 삽입 정렬

보시다시피, 인접한 요소 간에 교환되지 않습니다. 가장 작은 요소를 찾아 올바른 위치에 배치하기만 하면 됩니다. 우리는 첫 번째 요소부터 반복하고 끝을 향해 나아갑니다. 요소는 이전 요소와 비교된 다음 올바른 위치를 찾을 때까지 옆에 있는 요소와 비교됩니다. 제공된 예에서 2가 올바른 위치에 배치되기 전에 4번 비교되었음을 알 수 있습니다. 다음은 코드 예제입니다.

public class Main {
  public static void main(String[] args) { // Insertion Sort....
    int[] arr2 = new int[] {5, 4, 3, 8, 32, 768, 564, 95, 172, 1500, 859, 754};
    int number = arr2.length;
    for (int a = 1; a < number; a++) {
      int keyValue = arr2[a];
      int b = a - 1;
      while (b >= 0 && arr2[b] > keyValue) {
        arr2[b + 1] = arr2[b];
        b = b - 1;
      }
      arr2[b + 1] = keyValue;
    }
    // printing inserion sort............................
    for (int i = 0; i < arr2.length; i++) {
      System.out.println(arr2[i]);
    }
  }
}

다음은 정렬 기능을 사용하지 않고 Java에서 배열을 정렬하는 데 사용할 수 있는 세 가지 방법입니다.