>  기사  >  Java  >  Java에서 선택 정렬 알고리즘을 구현하는 방법에 대한 예제 튜토리얼

Java에서 선택 정렬 알고리즘을 구현하는 방법에 대한 예제 튜토리얼

高洛峰
高洛峰원래의
2017-01-19 09:37:021081검색

선택 정렬 개념

선택 정렬도 교환 정렬 알고리즘이고 버블 정렬과 어느 정도 유사성을 가지고 있으므로 개인적으로 선택 정렬은 버블 정렬의 개선된 알고리즘이라고 볼 수 있다고 생각합니다. 아이디어는 다음과 같습니다.
이제 n개의 요소가 있는 arr[] 배열을 정렬한다고 가정합니다.
1 첫 번째 요소(Java에서는 아래 첨자가 0임)와 두 번째 요소를 비교합니다. 전자가 후자보다 크면 가장 작아서는 안 되지만 버블 정렬 교환만큼 불안하지는 않습니다. 현재 가장 작은 요소의 첨자를 저장하기 위해 임시 변수 a를 설정할 수 있습니다. 그런 다음 현재 가장 작은 요소를 세 번째 요소와 계속 비교합니다. 그래도 여전히 가장 작은 요소가 아닌 경우 a의 값을 수정합니다. 이런 방식으로 마지막 요소와의 비교가 완료될 때까지 a는 가장 작은 요소의 첨자를 저장한다는 것을 확인할 수 있습니다.
2. a의 값이 0(초기값, 즉 첫 번째 요소의 첨자)이 아닌 경우 두 요소를 첨자 a와 0으로 교환합니다.
3. 이번에는 아래 첨자가 1인 요소부터 시작하여 위 과정을 반복합니다. 왜냐하면 가장 작은 요소가 이미 아래 첨자 0이 있는 위치에 배치되어 있기 때문입니다.
4. 마지막 요소만 남을 때까지 이 작업을 수행하면 이 요소가 가장 큰 것을 확인할 수 있습니다.
5. 정렬이 완료되었습니다.
분명히 이 알고리즘에는 n-1 라운드의 정렬도 필요합니다.
위의 내용은 매번 최소값을 구하는 방법일 뿐이라는 점에 유의해야 합니다. 사실, 매번 최대값을 찾을 수도 있지만, 그럴 때마다 배열의 끝에 넣어야 합니다.

Java 구현 코드:
SelectArray.java

package ch02;
 
public class SelectArray {
  // 数组
  private long[] arr;
 
  // 数组中有效数据的大小
  private int elems;
 
  // 默认构造函数
  public SelectArray() {
    arr = new long[50];
  }
 
  public SelectArray(int max) {
    arr = new long[max];
  }
 
  // 插入数据
  public void insert(long value) {
    arr[elems] = value;
    elems++;
  }
 
  // 显示数据
  public void display() {
    for (int i = 0; i < elems; i++) {
      System.out.print(arr[i] + " ");
    }
    System.out.println();
  }
 
  // 选择排序
  public void selectSort(){
    int min = 0;
    long tmp = 0L;
    for(int i = 0; i < elems -1; i++){
      min = i;
      for(int j = i + 1; j < elems; j++) {
        if(arr[j] < arr[min]) {
          min = j;
        }
      }
      tmp = arr[i];
      arr[i] = arr[min];
      arr[min] = tmp;
    }
  }
}

테스트 코드:

package ch02;
 
public class TestSelectArray {
 
  public static void main(String[] args) {
    SelectArray sArr = new SelectArray();
    sArr.insert(89);
    sArr.insert(54);
    sArr.insert(667);
    sArr.insert(7);
    sArr.insert(12);
    sArr.insert(43);
    sArr.insert(12);
 
    sArr.display();
    sArr.selectSort();
    sArr.display();
 
  }
 
}

결과:

Java에서 선택 정렬 알고리즘을 구현하는 방법에 대한 예제 튜토리얼


선택 정렬 알고리즘 예제 튜토리얼의 Java 구현에 대한 더 많은 관련 기사를 보려면 PHP 중국어 웹사이트에 주목하세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.