1、基本思想
在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。
2、图示
[img]http://dl2.iteye.com/upload/attachment/0113/1973/c8ed0c6a-b72b-3b6e-ba74-439a944a9741.png[/img]
3、Java实现
package com.leiht.sort;
/**
* 直接选择排序简单实现
4、分析
简单选择排序是不稳定的排序
在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。
2、图示
[img]http://dl2.iteye.com/upload/attachment/0113/1973/c8ed0c6a-b72b-3b6e-ba74-439a944a9741.png[/img]
3、Java实现
package com.leiht.sort;
/**
* 直接选择排序简单实现
* @author Leiht
*
*/
public class SimpleSelectSort {
public static void main(String[] args) {
int[] numbers = { 56, 45, 78, 67, 99, 13, 34, 49, 55, 34, 12, 77, 1 };
System.out.println("排序之前:");
for (int i = 0; i < numbers.length; i++) {
System.out.print(numbers[i] + " ");
}
//执行排序算法
new SimpleSelectSort().sort(numbers);
System.out.println();
System.out.println("排序之后:");
for (int i = 0; i < numbers.length; i++) {
System.out.print(numbers[i] + " ");
}
}
/**
* 排序方法
* @param numbers
*/
public void sort(int[] numbers) {
//从第0个开始循环数组中第一个元素
for(int i = 0; i < numbers.length; i++) {
int min = numbers[i];
int index = i;
//从当前元素的下一个元素开始循环,选出从i到最后一个中最小的放到第i个位置
for(int j = i + 1; j < numbers.length; j++) {
if(numbers[j] < min) {
min = numbers[j];
index = j;
}
}
numbers[index] = numbers[i];
numbers[i] = min;
}
}
}
4、分析
简单选择排序是不稳定的排序