import java.util.Arrays;
/**
* java编程题:用Java实现一个简单选择排序算法
*
* 基本思想:
* 在长度为N的无序数组中,第一次遍历n-1个数,找到最小的数值与第一个元素交换;
* 第二次遍历n-2个数,找到最小的数值与第二个元素交换;
* 。。。
* 第n-1次遍历,找到最小的数值与第n-1个元素交换,排序完成
*
* 思路:
* 两层循环
* 第一个层循环遍历数组,第二层循环找到剩余元素中最小值的索引,内层循环结束,交换数据。
* 内层循环每结束一次,排好一位数据。两层循环结束,数据排好有序。
*
*/
public class Test {
public static void main(String[] args) {
int a[] = { 22, 18, 36, -20, 93, 6, -1, 17, 9, 69, 38 };
selectSort(a);
System.out.println(Arrays.toString(a));
}
/**
* 简单选择排序
* @param sortNum
*/
private static void selectSort(int[] sortNum){
for (int i = 0; i < sortNum.length; i++) { //遍历数组
int minIndex = i; //记录最小值所在的索引值
for (int j = i+1; j < sortNum.length; j++) { //找剩余元素中最小值得索引
if(sortNum[j] < sortNum[minIndex]){
minIndex = j;
}
}
// 将最小的一个数与第一个位置(sortNum[i])的数交换
if(minIndex != i){
int temp = sortNum[i];
sortNum[i] = sortNum[minIndex];
sortNum[minIndex] = temp;
}
}
}
}
参考:
http://blog.csdn.net/jianyuerensheng/article/details/51254311
http://blog.csdn.net/ls5718/article/details/51809866
http://blog.csdn.net/u010156024/article/details/48932219
https://my.oschina.net/u/2260184/blog/507857
http://blog.csdn.net/u014136472/article/details/49248957
http://www.runoob.com/w3cnote/sort-algorithm-summary.html