选择排序
来源:互联网 发布:海德格尔萨特知乎 编辑:程序博客网 时间:2024/06/05 14:22
简单选择排序:
就是通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i个记录交换。简单选择排序复杂度分析:它的比较次数一定:n(n-1)/2。也因此无论在序列何种情况下,它都不会有优秀的表现,可见对数据的有序性不敏感。它虽然比较次数多,而对于交换次数而言,当最好的时候,交换为0次,最坏的时候交换次数为n-1次,所以数据交换量却很少,基于时间复杂度是比较与交换次数的总和,因此总的时间复杂度依然为O(n^2)。尽管与冒泡排序算法的时间复杂度相同,但是简单选择排序的性能上还是略优于冒泡排序。
复杂度:
平均情况:O(n*n)最好情况:O(n*n)最坏情况:O(n*n)空间复杂度:O(1)
稳定性:
举个例子,序列5 8 5 2 9,我们知道第一遍选择第1个元素5会和2交换,那么原序列中2个5的相对前后顺序就被破坏了,所以选择排序不是一个稳定的排序算法。
#include<stdio.h>void printArray(int a[], int size) //打印数组元素{ int i; for(i = 0; i < size; i++) printf("%d ",a[i]); printf("\n");}void Select_Sort(int a[],int len) { int i,j,index,temp; for (i = 0;i < len-1;i++) { index = i; for (j = i+1;j < len;j++) { if (a[index] > a[j]) index = j; } if (i != index) temp = a[i]; a[i] = a[index]; a[index] = temp; printArray(a,10); } } int main(){ int count=10,a[10]={3,0,1,8,7,2,5,4,9,6}; printArray(a,count); Select_Sort(a,count);}
0 0
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序:
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 文件的使用
- .NET定时任务执行管理器开源组件–FluentScheduler
- 自定义View之——风车的绘制
- GoD 命运之婶
- 五种常见的 PHP 设计模式
- 选择排序
- elasticsearch优化方案
- 使用中文分词工具切分ArcGIS在线文档
- Java多线程七:线程池应用
- React Native应用部署/热更新-CodePush最新集成总结
- 实施数据库审计-DBA负责的安全和审计工作以及标准数据库审计
- 织梦dedecms内容页如何调用作者头像和其他信息
- 一种不能进行gpu加速的折中方法
- 7、Java类集