选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的开头/(末尾)。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。
选择排序是不稳定的排序方法。
解释:有可能在进行排序比较的时候交换两个排序好的元素的位置;
但是选择排序相对于冒泡排序:交换元素的次数更少。
原理:找到最小值或者最大值,将其和开头或者结尾的元素的位置进行交换;
附上手搓的源代码:
/**
* 选择排序
* @author weichert
*/
public class SelectSort {
public static void main(String[] args) {
//定义一个数组用于存放需要进行选择排序的数组;
int[] arr = {1,3,5,7,9,2,4,6,8,10};
for (int i = 0; i < arr.length; i++) {
//此处的i为每次最小值存放的位置;
int minIndex = i;
//每一轮排序过后,j的位置将从i + 1开始比较;
for (int j = i + 1; j < arr.length; j++) {
//将j索引与最小值的比较
if (arr[minIndex] > arr[j]) {
//将最小值的索引赋值给minIndex;
minIndex = j;
}
}
//将最小值的索引和第i个元素交换位置;
if (minIndex != i) {
int temp = arr[minIndex];
arr[minIndex] = arr[i];
arr[i] = temp;
}
}
//打印数组判断是否交换成功;
System.out.println (Arrays.toString (arr));
}
}
有任何问题可以在评论区打出你的疑惑哦!