一、基本概念
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置(注:要把最大最小的元素和起始的元素交换),
然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
二、算法特点
是否稳定: false
平均时间复杂度:O(n^2)
最差时间复杂度:O(n^2)
最优时间复杂度:O(n^2)
package com.jiafuwei.java; /** * java 选择排序 * @author jfw * */ public class SelectionSort { public static void main(String[] args) { int [] collections = {36,23,56,789,342,456,34,7,234,4578,32}; SelectionSort selectionSort = new SelectionSort(); selectionSort.sort(collections); for (int i = 0; i < collections.length; i++) { System.out.print(collections[i]+" "); } } public void sort(int [] data) { for(int k=0;k<data.length;k++){ int min = k; //先把这一圈循环中的第一个数和后面的数进行比较 如果大于后面的数 然后把后面数的下标值记录下来 //注意 这里i=k 是从k后面开始循环 for(int i=k;i<data.length;i++){ if(data[min]>data[i]){ min = i; } } //把这一圈循环中的一个数记录下来 int temp = data[k]; //把这一圈循环中的一个数变成最小的数 data[k] = data[min]; //把以前最小数的位置 改变为当时的第一个数 data[min] = temp; } } }
来源:https://www.cnblogs.com/jiafuwei/p/6025931.html