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

来源:互联网 发布:sip服务器 linux 编辑:程序博客网 时间:2024/06/07 12:23

直接选择排序(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)

阅读全文
0 0
原创粉丝点击