简单选择排序:每一趟都会从待排序的数据元素中找出最大的(或者最小的)放在最前面作为首元素,直到所有元素被排完。
贴代码上来了
package com.e_bubble;
import java.util.Arrays;
public class ChooseDemo {
public static void main(String[] args) {
int[] a = { 10, 17, 13, 25, 9, 1, 6, 8, 2, 4 };
System.out.println("排序前:" + Arrays.toString(a));
selectionSort(a);
System.out.println("简单选择排序后:" + Arrays.toString(a));
}
public static void selectionSort(int[] arr) {
// 需要遍历获得最小值的次数
for (int i = 0; i < arr.length - 1; i++) {
int min = i; // 用来保存最小值得索引
// 寻找第i个小的数值
for (int j = i + 1; j < arr.length; j++) {
if (arr[min] > arr[j])
min = j;
}
// 若min有变化,就将找到的第i个小的数值与第i个位置上的数值交换
if (min != i) {
int temp = arr[min];
arr[min] = arr[i];
arr[i] = temp;
}
}
}
}
总的时间复杂度为O(n2),和冒泡排序一样,但是在性能上还是要略优于冒泡排序-----《大话数据结构》