排序算法(三)直接选择排序(Straight Select Sorting)

直接选择排序(Straight Select Sorting)

介绍

简单选择排序是最简单直观的一种算法,基本思想为每一趟从待排序的数据元素中选择最小(或最大)的一个元素作为首元素,直到所有元素排完为止。

过程动画:

这里写图片描述

直接选择排序代码实现(java)

public static int[] StraightSelectSort(int [ ] array) {
          //N个数组元素,就需要循环N轮
        for(int i = 0; i < array.length-1; i++){
            //最小数的索引,该索引每次都根据外层循环的计数器来觉得初始值。
            int minIndex = i;
            for (int j = i + 1; j < array.length; j++)
            {
                //根据最小数的索引,判断当前这个数是否小于最小数。
                //如果小于,则把当前数的索引作为最小数的索引。
                //否则不处理。
                if(array[minIndex] > array[j]){
                    minIndex = j;
                }
                //直到循环完成的时候,minIndex肯定就是当前这轮循环中,最小的那个。
            }
            //System.out.print(i + "轮,最小数" + array[minIndex] + ",");
            //System.out.print("原索引" + minIndex + ",新索引" + i);
            //得到最小数的索引后,把该索引对应的值放到最左边,并且把最左边的值放到索引所在的位置.
            //最左边的值
            int temp = array[i];
            //把最小数索引对应的值放到最左边
            array[i] = array[minIndex];
            //把原来最左边对应的值放到最小数索引所在的位置
            array[minIndex] = temp;

        }
        return array;
    }

性能分析

时间复杂度:对于交换操作,在最好情况下也就是数组完全有序的时候,无需任何交换移动,在最差情况下,也就是数组倒序的时候,交换次数为n-1次。综合下来,时间复杂度为O(n2)

稳定性:由于在直接选择排序中存在着不相邻元素之间的互换,因此,直接选择排序是一种不稳定的排序方法。

空间复杂度: O(1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值