美文网首页C++算法题及解答
排序算法之选择排序

排序算法之选择排序

作者: BEYOND黄 | 来源:发表于2017-06-01 13:23 被阅读16次

选择排序也是一种简单直观的排序算法。它的工作原理很容易理解:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置;然后,再从剩余未排序元素中继续寻找最小(大)元素,放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

// 分类 -------------- 内部比较排序

// 数据结构 ---------- 数组

// 最差时间复杂度 ---- O(n^2)

// 最优时间复杂度 ---- O(n^2)

// 平均时间复杂度 ---- O(n^2)

// 所需辅助空间 ------ O(1)

// 稳定性 ------------ 不稳定

选择排序是不稳定的排序算法,不稳定发生在最小元素与A[i]交换的时刻。比如序列:{5, 8,5,2, 9 },一次选择的最小元素是2,然后把2和第一个5进行交换,从而改变了两个元素5的相对次序。

#include

usingnamespacestd;

voidexchange(intA[],inti,intj)//交换A[i]和A[j]

{

inttemp = A[i];

A[i] = A[j];

A[j] = temp;

}

intmain()

{

intA[] = {8,5,2,6,9,3,1,4,0,7};//从小到大选择排序

intn =sizeof(A) /sizeof(int);

inti, j, min;

for(i =0; i <= n -2; i++)//已排序序列的末尾

{

min = i;

for(j = i +1; j <= n -1; j++)//未排序序列

{

if(A[j] < A[min])//依次找出未排序序列中的最小值,存放到已排序序列的末尾

{

min = j;

}

}

if(min != i)

{

exchange(A, min, i);//该操作很有可能把稳定性打乱,所以选择排序是不稳定的排序算法

}

}

printf("选择排序结果:");

for(i =0; i < n; i++)

{

printf("%d ",A[i]);

}

printf("\n");

return0;

}

相关文章

  • 算法-选择排序

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

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

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

  • 经典排序算法总结

    经典排序算法集锦 冒泡法 排序算法入门之冒泡排序 排序算法入门之冒泡排序优化

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

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

  • JS实现排序算法

    原文:常见排序算法之JavaScript实现 - 知乎 目录 冒泡排序 选择排序 插入排序 合并排序 快速排序 1...

  • 算法4:插入排序和选择排序算法的比较

    排序算法列表电梯: 选择排序算法:详见 《算法4》2.1 - 选择排序算法(Selection Sort), Py...

  • 图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序

    图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序 图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序

  • PHP常用算法

    基于选择的排序算法 常见的基于选择的排序算法有:冒泡排序、插入排序、选择排序、归并排序和快速排序,我们在选在排序算...

  • 算法and数据结构

    算法 冒泡排序 选择排序 计数排序

  • 基础排序算法总结

    排序算法分为内部排序和外部排序,而我们经常说的基础排序算法,都是内部排序算法。包括冒泡排序,选择排序,插入排序,快...

网友评论

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

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