概念
选择排序(Selection sort)也是一种简单直观的排序算法。
算法步骤
- 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置
- 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
- 重复第二步,直到所有元素均排序完毕。
概念图
代码
package com.fwj.list;
/**
* 描述:各种排序尝试
* <p>
* 作者:草鱼狂飙
* <p>
* 时间: 2016/8/18.
*/
public class InsertSort {
public static void main(String[] args) {
int[] datas = new int[]{49, 38, 65, 97, 26, 13, 27, 49, 55, 4};
selectSort(datas);
printArray(datas);
}
/**
* 选择排序
*
* @param datas 选择排序数据源
*/
private static void selectSort(int[] datas) {
for (int i = 0; i < datas.length; i++) {
int minIndex = i;
for (int j = i; j < datas.length; j++) {
if (datas[j] < datas[minIndex]) {
minIndex = j;
}
}
if(i!=minIndex){
Swap(datas,i,minIndex);
}
}
}
/**
* 交换数据中指定两个索引位置的值
* @param datas 数组
* @param index1 第一索引
* @param index2 第二索引
*/
private static void Swap(int[] datas, int index1, int index2) {
int temp = datas[index1];
datas[index1] = datas[index2];
datas[index2] = temp;
}
private static void printArray(int[] datas) {
for (int data : datas) {
System.out.print(data + ", ");
}
}
}