0
点赞
收藏
分享

微信扫一扫

选择排序算法讲解(运行截图+源码)


选择排序。


选择排序:每趟从待排序的记录中选出关键字最小的记录,顺序放在已排序的记录序列末尾,直到全部排序结束为止。

简单排序处理流程: 


( 1 )从待排序序列中,找到关键字最小的元素;
( 2 )如果最小元素不是待排序序列的第一个元素,将其和第一个元素互换;
( 3 )从余下的 N - 1 个元素中,找出关键字最小的元素,重复( 1 )、( 2 )步,直到排序结束。




选择排序算法讲解(运行截图+源码)_源码



第 i 小的元素放在位置 i 上。


第 i 小的元素放在位置 i 上。 


简单选择排序算法的性能


排序类别

排序方法

时间复杂度

空间复杂度

稳定性

复杂性

平均情况

最坏情况

最好情况

选择排序

简单选择排序

O(N2)

O(N2)

O(N2)

O(1)

不稳定

简单

时间复杂度

比较次数总是N (N - 1) / 2。

而移动次数与序列的初始排序有关。当序列正序时,移动次数最少,为 0.

当序列反序时,移动次数最多,为3N (N - 1) /  2。

O(N2)。  


空间复杂度


简单选择排序需要占用一个临时空间,在交换数值时使用。

程序实例如下:

#include<iostream> 
#include<cmath>
using namespace std;
int main()
{
const int N=5;
int i,j;
int array[N];

for(int i=0;i<N;i++)
{
cin>>array[i];
}

for(int i=0;i<N;i++) //输入数据
{
cout<<array[i]<<" ";
}
cout<<endl;

for(int i=0;i<N-1;i++) //使用选择法排序
{
for(int j=i+1;j<N;j++)
{
if(array[i]>array[j])
{
swap(array[i],array[j]);
}
}
}

for(int i=0;i<N;i++) //输出排序过后的数据
{
cout<<array[i]<<" ";
}
return 0;
}

运行截图:


选择排序算法讲解(运行截图+源码)_时间复杂度_02

注:

参考文章:​​排序算法实例(冒泡法排序、选择法排序、直接插入排序 、希尔法排序、折半插入排序)​​​     ​​冒泡排序算法详解C++程序​​


举报

相关推荐

0 条评论