选择排序
来源:互联网 发布:成都大数据协会 编辑:程序博客网 时间:2024/06/05 03:50
基本概念:
每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
基本思想:
每轮找一个最大(小)值。 在一个长度为N的无序数组中,在第一趟遍历N个数据,找出其中最小的数值与第一个元素交换,第二趟遍历剩下的N-1个数据,找出其中最小的数值与第二个元素交换......第N-1趟遍历剩下的2个数据,找出其中最小的数值与第N-1个元素交换,至此选择排序完成。
复杂度分析:
空间效率:仅用了一个辅助交换单元。O(n) 选择排序最好(正序无交换)为O(0) 。 选择排序的最坏(倒序)为O(n2)。 选择排序的平均(乱序)为O(n2)。 选择排序是不稳定的。
#include<bits/stdc++.h>using namespace std;void f(int a[],int n){ int i,j,temp; for(i=1; i<n; i++) //从第一个位置开始 { temp=i; for(j=i+1; j<=n; j++) { if(a[j]<a[temp]) temp=j; // 查找最小数的位置 } if(temp!=i) // 如果a[i]不是最小数 swap(a[i],a[temp]); }}int main(){ int n,i,a[100010]; scanf("%d",&n); for(i=1; i<=n; i++) scanf("%d",&a[i]); f(a,n); for(i=1; i<=n; i++) printf("%d ",a[i]); return 0;}
阅读全文
0 0
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序:
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- linux编辑器vim常用命令
- adb命令行保存logcat信息
- 日常小结篇-日期处理(java程序,Oracle数据库)
- 字符串算法——二维有序数组中查找目标值(Search a 2D Matrix)
- VMware虚拟机中如何配置静态IP
- 选择排序
- HDU 5924 Mr. Frog’s Problem
- Java基础笔记
- 分布式架构:spring mvc +mybatis + Dubbo+Zookeeper+Proxy+Restfu
- 在eclipse里面启动tomcat的时候出错:A child container failed during start
- leetCode 11
- GAN的理解与TF的实现
- Git 如何删除本地分支和远程分支
- 图算法:强连通分量