选择排序
来源:互联网 发布:js invalid signature 编辑:程序博客网 时间:2024/05/22 16:03
选择排序
算法概括:
·平均时间复杂度:O(n^2)
·原理分析:对于N个无序数,第一轮将N个元素中最小(大)的元素与第一个元素交换,第二轮将除第一个的剩下的N-1个元素中最小(大)的元素与第二个元素交换……第N-1轮将最后剩下的2个元素中的最小(大)的元素与第N-1个元素交换。即完成选择排序。
C语言代码实现(以从小到大排序为例):
#include <stdio.h>#include <stdlib.h>void swap(int *x,int *y)//我是萌萌哒的交换函数{ int temp; temp=*x; *x=*y; *y=temp;}void Selection_sort(int *a,int n){ int i,j,min_x,min;//min用来储存剩下无序元素中最小的元素的值,min_x则用于储存它的下标 for (i=1;i<=n-1;i++)//总共有N-1轮 { min=99999999;//记录最小(大)值的变量初始化尽量大(小),而且每次排完一轮后必须再次初始化哦 for (j=i;j<=n;j++)//开始找第i-1个元素中后面剩下元素的最小的那个啦 { if (a[j]<min) { min=a[j]; min_x=j; } } if (i!=min_x)//如果最小的就在它应该在的位置就没必要交换了 swap(&a[i],&a[min_x]);//这时候之前记录的下标就派上用场了 }}int main(void){ int n,i; scanf ("%d",&n); int a[n+1]; for (i=1;i<=n;i++) scanf("%d",&a[i]); Selection_sort(a,n);//开始选择排序啦啦啦啦~ for (i=1;i<=n;i++) printf ("%d ",a[i]); return 0;}
阅读全文
1 0
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序:
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 欧盟委员会将评估欧盟区块链基础设施的潜力
- 日本的加密货币监管值得西方政府学习
- leaf开源服务器第三节-分析TCP消息通信之增加Glog日志(1)
- 在Android Studio中NDK环境配置
- 安卓IPC机制简介
- 选择排序
- log4j- 打印mybatis中sql
- A New World is Coming
- pandas使用中的难点
- Elasticsearch与Solr 选型
- (转)--Cron 表达式详解
- Laravel多用户Auth登录
- 复杂网络MATLAB工具箱
- mysql left( right ) join使用on 与where 筛选的差异 博客分类: mysql MySQLSQL数据结构 有这样的一个问题mysql查询使用mysql中left(