java实现简单选择排序

public class SelectSort {
    public SelectSort(int a[])                  //简单插入排序  本质上就是两层循环的遍历
    {
        /*过程很简单,就是每一遍遍历都要找出一个剩下的最小,比如第一次遍历找最小的 放在第一位
        第二次遍历就找第二小的,依次类推
        * */
        int min=0;
        for(int i=0;i<a.length;i++){            //遍历数组
            min=a[i];
            int index=i;                                //存储最小的那个数的下标,这里为i可以保证如果没有交换的话*号处a[i]的值不会改变
            for(int j=i+1;j<a.length;j++)           //从第i个开始就是没有排序的数据,要比较就从i+1个开始比较
            {
                if(a[j]<min)
                {
                    min=a[j];                   //存储最小值和下标
                    index=j;
                }
            }
            a[index]=a[i];                  //✳         交换数据
            a[i]=min;
        }
    }

    public static void main(String[] args) {
        int a[] = new int[100];
        for (int i = 0; i < a.length; i++)              //产生0-10001的数组
            a[i]=(int)(Math.random()*1000+1);
        //int a[] = {1, 6, 23,21};
        new SelectSort(a);
        for (int i = 0; i < a.length; i++)
            System.out.println(a[i]);
    }
}

一次过程如图所示(不完整):
在这里插入图片描述
时间复杂度:从以上代码可以看出,无论是哪种最优最坏情况,都是执行两层for循环,故时间复杂度是O(n²)

猜你喜欢

转载自blog.csdn.net/weixin_44137260/article/details/103174045