每一趟从待排序的数据元素中选出最小(或最大的)一个元素,

顺序放在已排好的序的数列的最后,直到全部待排序的数据元素排完。

选择排序是不稳定的排序方法。

 选择排序的时间复杂度为 O(n^2)。

        第一次需要检查n个元素,但随后检查的元素数依次为n - 1, n – 2, …, 2和1。平均每次检查的元素数为1/2 * n, 因此运行时间为 n * 1/2 * n,简单地写作 O(n^2)。

例:

34,4,56,17,90,65

4,34,56,17,90,65  第一轮 5次

4,17,56,34,90,65  第二轮 4次

4,17,34,56,90,65  第三轮 3次

4,17,34,56,65,90  第四轮 2次

4,17,34,56,65,90  第五轮 1次

代码如下:

ppublic static void main(String[] args) {
        int[] num = {34,4,56,17,90,65};
        int minIndex = 0;//用于记录每次比较的最小值下标
        //控制轮数
        for(int i =0;i<num.length-1;i++) {
            minIndex =i; //每轮假设一个最小值下标
            for(int j =i+1;j<num.length;j++) {
                if(num[minIndex]>num[j]) {
                    minIndex=j;
                }
            }
          //判断需要交换的数下标是否为自己
            if(minIndex!=i) {
                num[minIndex]=num[minIndex]+num[i];
                num[i]=num[minIndex]-num[i];
                num[minIndex]=num[minIndex]-num[i];
            }
        }
       //输出结果
        for(int x:num)
        System.out.println(x);
        
    }