常见排序算法之选择排序

选择排序是一种非常基础的排序算法.其算法思想仍然是将线性表看成有序和无序两个部分.因为其中运用到交换步骤,因此选择排序是一种交换排序.

选择排序

算法思想:
(1)开始时整个线性表为无序表,有序表为空.

(2)将无序表的第一个元素A[0]与其后的每个元素A[i] (i=1,2,3…n)作比较, 若A[0]较大,将A[i]交换.最后得到的第一个元素将是整个线性表中最小的元素.这样有序表元素+1,无序表元素-1;

(3)重复第(2)步,直到无序表长度为0;

示意图

这里写图片描述

代码演示

    /**
     * @param array
     * 选择排序
     */
    public  static void SelectionSort(int[] array) {
        for (int i=0;i<array.length-1;i++){
            for(int j=i+1;j<=array.length-1;j++){
                if(array[i]>array[j]){
                    swap(i, j, array);
                }
            }
        }
    }

交换函数

    /**
     * @param i
     * @param j
     * @param array
     */
    private static void swap(int i, int j,int [] array) {
        int temp=array[i];
        array[i]=array[j];
        array[j]=temp;
    }

算法性能分析
最好,最坏,平均情况下算法的时间复杂度均为 O(n2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值