选择排序—简单选择排序
基本思想:
选择排序的思想类似于冒泡排序,都是在一次排序后把最小的元素放到最前面。但是过程不同,冒泡排序是通过相邻的比较和交换。而选择排序是通过对整体的选择。比如序列[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]