选择排序
什么是选择排序?
(百度百科)它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
有一堆待排序的数据如 : 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(n2),简单易于实现,在某些情况下选择排序是首选。
浙公网安备 33010602011771号