算法之直接选择排序
来源:互联网 发布:淘宝上购买 森海塞尔 编辑:程序博客网 时间:2024/06/10 00:28
选择排序的基本思想:每次都从待排序的文件中选择出排序码最小的记录,将该记录放于已排序文件的最后一个位置,直到已排序文件记录个数等于初始待排序文件的记录个数位置。 这种思路导致的结果便是排出来的序列为从大到小;
选择排序主要分:
1. 直接选择排序
2. 树形选择排序
3. 堆排序
直接选择排序
直接选择排序是一种简单的方法,首先从所有的n个待排序的记录中选择排序码最小的记录,将该记录与第一个记录交换,再从剩下的n-1个记录中选择最小的记录与第二个记录做交换。一次循环,知道剩下两个记录时,再从中选出最小的记录与第n-1个记录交换。剩下的那一个记录肯定是最大的记录。
当选出来的i-1个记录放在前i-1个位置,接下来从剩余的n-(i-1)个记录中选出最小的记录与第i个记录交换。这里只要设置一个变量记下在查找过程中最小记录的位置,知道查完n-(i-1)个记录。只要最小的位置不为i,就将最小的排序码对应的记录与第i个记录交换;
void simpleSelectSort(table *tab){int i ,j,k;for(i=1;i<=tab->length-1;i++)//每次选择一个最小的位置,并与第i个位置交换{ k=i; //用于记录下最小记录的位置 for(j=i+1;j<tab->length;j++)//向右查找更小的记录 { if(tab->r[j].key<tab->tab->r[k].key) k=j; //如果有更小的记录,更改k的位置 } if(k!=i) //只要最小的位置不为i,就将最小的排序码对应的记录与第i个记录交换; { tab->r[0]=tab->r[k]; //用没有使用的0记录来作为交换的中介 tab->r[k]=tab->r[i]; tab->r[i]=tab->r[0]; } }}
直接选择排序
时间复杂度 O(N^2). 使用一个存储记录的附加空间
不稳定;
0 0
- 算法之直接选择排序
- 排序算法系列-选择之直接选择
- 排序算法总结之直接选择排序
- 排序算法汇总之直接选择排序
- 排序算法之直接选择排序
- 八大排序算法之直接选择排序
- 排序算法之直接选择排序
- 排序算法之三--直接选择排序
- 常用排序算法之直接选择排序
- 常见排序算法之直接选择排序
- 排序算法 之 直接选择排序
- 排序算法总结之直接选择排序
- 排序算法之--直接选择排序
- 排序算法六:选择排序之直接选择排序
- java核心技术之直接选择排序算法
- 算法基础之----直接选择排序
- 经典算法之直接选择排序
- 算法之美--选择排序--直接选择排序
- Echarts3之html2canvas下载图表(后续生成PDF)
- 网络图片下载 多线程
- app开发好了你还不得不了解ASO
- SDWebImage源码解读之干货大总结
- Swift的GCD详解
- 算法之直接选择排序
- Javascript中的 “&” 和 “|” 你知多少?
- 第一次
- java四种引用包括强引用,软引用,弱引用,虚引用。
- Huffman树
- 我的第一个python程序
- 小明学习Linux运维课后习题实战A
- Android 代码混淆心得!
- 今天是第一次面试