排序算法(四)选择排序

排序算法(四)选择排序

1.算法思路
  选择排序(Selection-Sort)是一种简单直观的排序算法。它的工作原理:依次遍历数列的位置(0到n),首先取第 0 个位置,之后从该位置之后的数列中寻找最小(最大)元素,将找到的数据元素与第 0 个位置的数据元素相交换。依次遍历接下了的所有位置(1、2、3.....n),直到所有元素均排序完毕。


2.图片示例

静图示例

动图示例


3.代码实现

        int[] numbers = {32, 54, 66, 8, 1, 6, 77, 69};
        for (int i = 0; i < numbers.length; i++) { // 最外层循环起遍历所有位置作用
            // 在这里记录位置和数据是极为重要的!!!
            // 分析一下代码即可明白
            int key = numbers[i]; // 记录当前数据,其实 numbers[i] 就是当前数据
            int position = i; // 记录当前数据的位置,其实 i 就是当前数据的位置
            for (int j = i + 1; j < numbers.length; j++) { // 最里面循环起寻找最小(大)元素
                // 取最小(大)元素
                if (numbers[j] < key) {
                    key = numbers[j];
                    position = j;
                }
            }
            // 交换数据
            numbers[position] = numbers[i];
            numbers[i] = key;
        }


4.总结
  选择排序是不稳定排序算法。因为最坏情况下,即待排序记录初始状态是按第一条记录最小,之后的记录从小到大顺序排列,则需要移动记录的次数最多为3(n-1),而最好情况下,即待排序记录初始状态就已经是正序排列了,则不需要移动记录。在使用选择排序算法时,数据量尽量小为好。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容