选择排序—简单选择排序
基本思想:
选择排序的思想类似于冒泡排序,都是在一次排序后把最小的元素放到最前面。但是过程不同,冒泡排序是通过相邻的比较和交换。而选择排序是通过对整体的选择。比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,对剩下的序列一次进行选择和交换,最终就会得到一个有序序列。选择排序只有在确定了最小数的前提下才进行交换,大大减少了交换的次数。选择排序的时间复杂度为O(n^2)。
动图演示:
(图片来自于网络)
Java算法实现:
import java.util.Arrays; public class Xuanze { public static void selectSort(int[] numbers) { int size = numbers.length; //数组长度 int temp = 0 ; //中间变量 for(int i = 0 ; i < size ; i++) { int k = i; //初始位置 //选择出应该在第i个位置的数 for(int j = size -1 ; j > i ; j--) { if(numbers[j] < numbers[k]) // 寻找最小的数 { k = j; // 将最小数的索引保存 } } //交换两个数 temp = numbers[i]; numbers[i] = numbers[k]; numbers[k] = temp; } } public static void main(String[] args) { int a[] = { 49,38,65,97,76,13,27,49 }; selectSort(a); System.out.println(Arrays.toString(a)); } }输出:[13, 27, 38, 49, 49, 65, 76, 97]