选择排序算法讲解(运行截图+源码)
来源:互联网 发布:ff14官网数据库 编辑:程序博客网 时间:2024/06/05 00:17
简单选择排序是一种选择排序。
选择排序:每趟从待排序的记录中选出关键字最小的记录,顺序放在已排序的记录序列末尾,直到全部排序结束为止。
简单排序处理流程:
( 1 )从待排序序列中,找到关键字最小的元素;
( 2 )如果最小元素不是待排序序列的第一个元素,将其和第一个元素互换;
( 3 )从余下的 N - 1 个元素中,找出关键字最小的元素,重复( 1 )、( 2 )步,直到排序结束。
( 2 )如果最小元素不是待排序序列的第一个元素,将其和第一个元素互换;
( 3 )从余下的 N - 1 个元素中,找出关键字最小的元素,重复( 1 )、( 2 )步,直到排序结束。
如图所示,每趟排序中,将当前第 i 小的元素放在位置 i 上。
如图所示,每趟排序中,将当前第 i 小的元素放在位置 i 上。
简单选择排序算法的性能
时间复杂度
简单选择排序的比较次数与序列的初始排序无关。 假设待排序的序列有 N 个元素,则比较次数总是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;}
运行截图:
注:
参考文章:排序算法实例(冒泡法排序、选择法排序、直接插入排序 、希尔法排序、折半插入排序) 冒泡排序算法详解C++程序
3 0
- 选择排序算法讲解(运行截图+源码)
- java选择排序算法深度讲解
- 冒泡、选择、快速排序算法(附java实现源码)
- 排序算法(冒泡、选择、插入)附Java演示源码
- 选择算法(选择排序)
- 简单选择排序算法java源码
- 排序:选择排序(算法)
- 排序算法讲解(一)
- 排序算法讲解(二)
- 排序算法讲解(三)
- "选择排序"算法-之通俗易懂原理讲解-java编程
- 选择排序(排序算法--比较排序)
- 数据结构算法之排序系列Java、C源码实现(3)--直接选择排序
- 算法分析-选择排序(直接选择排序 & 堆排序)
- 算法-排序-选择排序(直接选择和堆排序)
- 【排序算法】 选择排序 selection sort(选择类排序)
- 简单排序算法:简单选择排序(选择排序)
- 算法 - 选择排序(C#)
- hdu 1007 Quoit Design [sort+分治] 寻找最小距离点对
- R语言简单语法入门
- iOS开发之设置UINavigationBar的主题
- 一天一排序之“快速排序(quic_sort)”
- 第一章:MySql数据库入门
- 选择排序算法讲解(运行截图+源码)
- 16位平台、32位平台、64位平台下char、short、int、long、指针 分别占多少字节,操作系统可以使用的最大内存空间
- a毛 jquery 学习记 3 常规选择器(3)
- 自定义switch,CircularProgressView,check,segment
- 10分钟搭建 nginx +php +mysql(LNMP)此为线上环境配置专用
- 图结构练习——BFSDFS——判断可达性
- 经典IPC问题
- uml工具
- linux常用头文件详解(转)