排序算法一:选择排序

浪子不回头ぞ 提交于 2020-02-28 23:29:24

最简单也最没用的一种算法,时间复杂度为O(n²),而且不稳定,工程中一般不用…

思想:指定一个当前最小数(一般选第一个数),记录其下标为minpos,将它与后面的每一个数依次比较,若有数小于当前最小数,则交换两者的下标,并交换两个数的位置,重复上述步骤直到排好序

平均时间复杂度:O(n²),空间复杂度:1,不稳定

在这里插入图片描述

public class Test {
    public static void main(String[] args) {
       int[] arr={2,5,6,2,1,4,3,7,6};
       for(int i=0;i<arr.length-1;i++){
           int minpos=i;         //假定当前最小数为第一个数,定义当前下标
           for(int j=i+1;j<arr.length;j++){              //从第二个数开始依次与最小数比较
               if (arr[j]<arr[minpos]){
                   minpos=j;                          //若后面的数小于当前最小数,则交换二者下标
               }
           }
           int temp=arr[i];                              //将此时的最小数与原最小数交换
           arr[i]=arr[minpos];
           arr[minpos]=temp;
       }
       for(int i=0;i<arr.length;i++){                   //循环打印排好序的数组
           System.out.print(arr[i]+" ");
       }
    }
}

运行结果:

1,2,2,3,4,5,6,6,7

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!