美文网首页
排序算法之简单选择排序

排序算法之简单选择排序

作者: 木子小三金 | 来源:发表于2018-01-17 19:21 被阅读0次

文中大部分内容为摘抄自网友文章,仅供个人学习和备忘。

算法思想

在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。

算法步骤

  1. 第一趟,从n 个记录中找出关键码最小的记录与第一个记录交换;
  2. 第二趟,从第二个记录开始的n-1 个记录中再选出关键码最小的记录与第二个记录交换;
    以此类推.....
  3. 第i 趟,则从第i 个记录开始的n-i+1 个记录中选出关键码最小的记录与第i 个记录交换,
    直到整个序列按关键码有序。

算法复杂度

  • 最好的情况,即待排序记录初始状态就已经是正序排列了,则不需要移动记录。
  • 简单选择排序过程中需要进行的比较次数与初始状态下待排序的记录序列的排列情况无关。当i=1时,需进行n-1次比较;当i=2时,需进行n-2次比较;依次类推,共需要进行的比较次数是(n-1)+(n-2)+…+2+1=n(n-1)/2,即进行比较操作的时间复杂度为O(n^2),进行移动操作的时间复杂度为O(n)。

算法稳定性

简单选择排序是不稳定排序。

算法实现(JAVA)

public void simpleSelectionSort(int[] arr){
        int m = 0;  //启始插入位置
        int n = 0;  //最小数值位置
        while(m < arr.length){
            n = m;
            for(int i = n+1;i < arr.length;i++){//找出n
                if(arr[i] < arr[n])
                    n = i;
            }
            int temp = arr[m];
            arr[m] = arr[n];
            arr[n] = temp;
            m++;
        }
    }

参考文章

  1. 八大排序算法
  2. 简单选择排序-百度百科

相关文章

  • 3.1-选择排序-简单选择排序

    参考链接 选择排序:简单选择排序(Simple Selection Sort) 白话经典算法系列之四 直接选择排序...

  • 算法理解之排序-选择排序

    算法理解之排序-选择排序 选择排序是一种简单直观的排序算法, 以当前点为锚点, 向后依次进行比较所有未排序元素, ...

  • 排序算法(四)选择排序

    排序算法(四)选择排序 1.算法思路  选择排序(Selection-Sort)是一种简单直观的排序算法。它的工作...

  • 常用排序算法总结

    一、选择排序 选择排序示意图 选择排序(Selection sort)也是一种简单直观的排序算法。 算法步骤: 1...

  • 选择排序算法

    一、选择排序算法 选择排序(Selection sort)是一种简单直观的排序算法。 二、算法思想 每一次从待排序...

  • 基本排序算法

    冒泡算法 简单选择排序 堆排序 快排 归并排序

  • 『算法』之 初级排序算法总结

    本篇文章同时收录在我的个人博客:『算法』之 初级排序算法总结 选择排序 一种最简单的排序算法:首先,找到数组中最小...

  • 算法-选择排序

    算 法:选择排序算法时间复杂度: 选择排序算法概述 选择排序伪代码 选择排序实现 选择排序算法概述 排序算法有许...

  • 2018-04-03 排序算法

    8种排序算法:按照时间复杂度分为两类 简单排序算法:冒泡排序,选择排序,直接插入排序 改进算法:希尔排序,堆排序,...

  • 排序算法

    排序算法 非线性时间比较类排序 交换排序 冒泡排序 快速排序 插入排序 插入排序 希尔排序 选择排序 简单选择排序...

网友评论

      本文标题:排序算法之简单选择排序

      本文链接:https://www.haomeiwen.com/subject/rcnuoxtx.html