选择排序

   什么是选择排序?

(百度百科)它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。

有一堆待排序的数据如 :   8 , 3 , 4 , 6  ,  2 , 5 , 1  , 7 

                   第一次排序 :  1 , 3 , 4 , 6 , 2 , 5 , 8 , 7     将 8 与 1 的位置交换

                   第二次排序:   1 , 2 , 4 , 6 , 3  , 5 , 8 , 7    将 3与 2的位置交换

                   第三次排序:   1 , 2 , 3 , 6 , 4  , 5 , 8 , 7    将 4与 3的位置交换

                   以此类推

java 实现 (从小到大排序):

  public static void sort(int arr[], int n) {
        for (int i = 0; i < n; i++) {
            int minIndex = i;
            for (int j = i + 1; j < n; j++) {
                if (arr[j] < arr[minIndex]) {
                    minIndex = j;
                    swap(arr, i, minIndex);
                }
            }
        }
    }

public static void swap(int a[], int i, int j) {
        int temp = a[i];
        a[i] = a[j];
        a[j] = temp;
    }

scala 实现:

def sort(arr: Array[Int], n: Int): Unit = {
    for (i <- 0 to n) {
      var minIndex = i
      for (j <- i + 1 to n) {
        if (arr(j) < arr(i)) {
          minIndex = j
          swap(arr, i, minIndex)
        }
      }
    }
  }
 def swap(a: Array[Int], i: Int, j: Int): Unit = {
    val temp = a(i)
    a(i) = a(j)
    a(j) = temp
  }

选择排序的时间复杂度为O(n),简单易于实现,在某些情况下选择排序是首选。

 

posted on 2017-10-21 16:33  小玲子zhl  阅读(84)  评论(0)    收藏  举报

导航