简单选择排序

简介:

简单选择排序也叫作直接选择排序

基本思想:

每一趟在后面n-i+1个中选出关键字最小的记录,作为有序序列的第i个记录

(1)设待排序的记录存放在数组r[1…n ]中,第一趟从r[1]开始,通过n-1次比较,从n个记录中选出关键字最小的记录,记为r[k],交换r[1]和r[k].

(2)第二趟从r[2]开始,通过n-2次比较,从n-1个记录中选出关键字最小的记录,记为r[k],交换r[1]和r[k]。

(3)第i趟从r[i]开始,通过n-i次比较,从n-1+1个记录中选出关键字最小的记录,记为r[k],交换r[i]和r[k].

(4)经过n-1趟,排序完成。

这里写图片描述

void SelectSort(SqList &K)
{
//对顺序表L做简单选择排序
    for(i=1;i<L.length;++i)
{
//在L.r[i...L.length]中选择关键字最小的记录
     k=i;
     for(j=j+1;j<=L.length;j++)
     if(L.r[j].key<L.r[k].key)k=j;//k指向此趟排序中关键字最小的记录
     if(k!=i)
 {
     t=L.r[i];
     L.r[i]=L.r[k];//交换r[i]与r[k]
     L.r[k]=t;
}
}
}

算法分析

移动次数

  • 最好情况: 0

  • 最坏情况:3(n-1)

比较次数:1/2(n*n-n)

时间复杂度:O(n*n)

空间复杂度:O(1)

算法特点

            不稳定
目录
相关文章
|
3月前
|
算法 数据处理 Python
插入排序、选择排序和二分查找
插入排序、选择排序和二分查找
|
存储 搜索推荐 算法
八大排序算法-直接插入排序、希尔排序、直接选择排序、冒泡排序、堆排序、快速排序、归并排序、基数排序(下)
八大排序算法-直接插入排序、希尔排序、直接选择排序、冒泡排序、堆排序、快速排序、归并排序、基数排序(下)
|
9月前
|
算法
【算法】排序——选择排序和交换排序(快速排序)
上篇文章讲述了插入排序及插入排序的优化希尔排序,今天我们继续给大家带来排序中的选择排序和交换排序,选择排序包括直接选择排序、 其中还包括堆排序,因为之前讲过堆排序,这篇文章就不多讲解,点击直达堆排序。交换排序包括冒泡排序、快速排序。让我们开始今天的选择排序之旅吧!!!
|
算法 搜索推荐
选择排序之简单选择排序
选择排序之简单选择排序
71 0
|
算法 搜索推荐
简单选择排序,直接插入排序、冒泡排序
简单选择排序,直接插入排序、冒泡排序
|
算法 搜索推荐 JavaScript
每天一点算法-简单选择排序-(Day7)
每天一点算法-简单选择排序-(Day7)
57 0
|
存储 算法 搜索推荐
【排序算法】冒泡排序、简单选择排序、直接插入排序比较和分析
本文简单介绍了冒泡排序、简单选择排序、直接插入排序,并对这三种排序进行比较,入参都是80000个随机数,比较算法耗时。进一步,我们通过代码分析三种排序算法的性能。
【排序算法】冒泡排序、简单选择排序、直接插入排序比较和分析
|
搜索推荐
排序算法-冒泡法(起泡法)
排序算法-冒泡法(起泡法)
排序算法-冒泡法(起泡法)
|
搜索推荐 数据处理
八大排序算法~希尔排序【改良版的直接插入排序】
八大排序算法~希尔排序【改良版的直接插入排序】
91 0
八大排序算法~希尔排序【改良版的直接插入排序】
|
搜索推荐 算法
八大排序算法~堆排序
八大排序算法~堆排序
130 0