关于Java排序算法-直接选择排序(Select Sort)

关于Java排序算法-直接选择排序(Select Sort)

基本思想:每一趟排序,如第 i 趟 ( i = 0, 1, …, n-2) ,均在 待排序记录中选出排序码最小的记录, 作为有序序列中的第 i 个记录。包括直接选择排序和堆排序。
基本操作:第一趟从n个记录中选出排序码最小的记录与第1个记录交换;第二趟在余下的n-1个记录中再选出排序码最小的记录与第2个记录交换;依次类推,直至第n-1趟选出相应记录与第n-1个位置上的记录交换。

public class SortTest {
  public static void main(String[] args) {
    int[] arr = { 49, 38, 65, 97, 49, 13, 27, 76 };
    display("原始数据 : ", arr);
    // 选择排序
    selectSort(arr);
    display("排序结果:", arr);
  }

  // 交换元素
  public static void swap(int[] arr, int a, int b) {
    int temp = arr[a];
    arr[a] = arr[b];
    arr[b] = temp;
  }

  // 显示
  public static void display(String str, int[] arr) {
    System.out.println(str);
    for (int i = 0; i < arr.length; i++) {
      System.out.print(arr[i] + " ");
    }
    System.out.println();
  }

  // 选择排序
  public static void selectSort(int[] arr) {
    int k, j;
    for (int i = 0; i < arr.length; i++) {
      k = i;
      for (j = i + 1; j < arr.length; j++) {
        if (arr[j] < arr[k])
          k = j;
      }
      if (k != i) {
        swap(arr, i, k);
      }
    }
  }

}

原始数据 :
49 38 65 97 49 13 27 76
排序结果:
13 27 38 49 49 65 76 97

发表回复

您的电子邮箱地址不会被公开。