首页 > 编程语言 > 详细

算法---排序算法---选择排序

时间:2020-03-23 10:44:22      阅读:70      评论:0      收藏:0      [点我收藏+]

1、实现思路

    从  待排序的数据中   选择最小(或最大)的    放在首位--->从除首位数据中 选择最小(或最大)放在  除首位的首位,以此类推,直至 未排序的为0;

2、算法分析

    2.1、不稳定  排序

    2.2、

      比较趟数: 0至(n-1)

      比较次数:   a=(n-1)+(n-2)+...2+1       => A:a=(n-1)+(n-2)+...2+1     B:    a=1+2+...+(n-2)+(n-1)  【n-1个数】=> A+B =>  2a=n+...n  =>a=n(n-1)/2

      赋值次数: int temp=arr[minIndex]; arr[minIndex]=arr[i]; arr[i]=temp;     0至3(n-1)

    2.3、时间复杂度O(n^2)

3、

public static void main(String[] args) {
        int[] arr=new int[]{4,3,6,7,2,1,9};

        //一共需要比较多少趟
        for (int i=0;i<arr.length-1;i++){
            //每趟 最小值索引
            int minIndex=i;
            for (int j=i+1;j<arr.length;j++){
                if (arr[j]<arr[minIndex]){
                    minIndex=j;
                }
            }

            //如果 最小值索引  不同于  i ,需要交换
            if (minIndex!=i){
                int temp=arr[minIndex];
                arr[minIndex]=arr[i];
                arr[i]=temp;
            }

        }

        for (int i:arr) System.out.println(i);
    }

 

算法---排序算法---选择排序

原文:https://www.cnblogs.com/anpeiyong/p/12550256.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!