基本思想:

在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。

简单选择排序 - 图1

代码实现:

  1. public class SelectionSort {
  2. public static void main(String[] args) {
  3. int[] a={49,38,65,97,76,13,27,49,78,34,12,64,1,8};
  4. System.out.println("排序之前:");
  5. for (int i = 0; i < a.length; i++) {
  6. System.out.print(a[i]+" ");
  7. }
  8. //简单的选择排序
  9. for (int i = 0; i < a.length; i++) {
  10. int min = a[i];
  11. int n=i; //最小数的索引
  12. for(int j=i+1;j<a.length;j++){
  13. if(a[j]<min){ //找出最小的数
  14. min = a[j];
  15. n = j;
  16. }
  17. }
  18. a[n] = a[i];
  19. a[i] = min;
  20. }
  21. System.out.println();
  22. System.out.println("排序之后:");
  23. for (int i = 0; i < a.length; i++) {
  24. System.out.print(a[i]+" ");
  25. }
  26. }
  27. }

总结:

简单选择排序是不稳定的排序,时间复杂度:T(n)=O(n^2)