选择排序法及其优化
来源:互联网 发布:wp.js 编辑:程序博客网 时间:2024/05/18 02:53
选择排序法及其优化
巧若拙
选择排序基础算法是每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
选择排序基础算法代码如下:
void SelectSort_1(int vec[], int n) //选择排序基础算法
{
int i, j, min;
inttemp;
for(i=0; i<n-1; i++)
{
min= i;
for(j=i+1; j<n; j++)
{
if(vec[j] < vec[min])
{
min= j;
}
}
if(min != i)
{
temp= vec[i];
vec[i]= vec[min];
vec[min]= temp;
}
}
}
为了减少比较的次数,可采用每一趟扫描时,同时选出最大和最小值,这样逐步缩小扫描范围,直到只剩下一个元素。
改进版本中有一点要注意:如果最大值在最左边,肯定要被移走,此时要转移到相应的新位置。
选择排序基础改进代码如下:
void SelectSort_2(int vec[], int n) //选择排序改进算法:同时选出最大和最小值
{
int i, min, max,left, right;
int temp;
for (left=0,right=n-1; left<right; left++, right--)
{
min = left;
max = right;
for (i=left;i<=right; i++)
{
if(vec[i] < vec[min])
{
min= i;
}
elseif (vec[i] > vec[max])
{
max= i;
}
}
if (min !=left)
{
temp= vec[left];
vec[left]= vec[min];
vec[min]= temp;
if(max == left) //如果最大值在最左边,肯定要被移走,此时要转移到相应的新位置
{
max= min;
}
}
if (max !=right)
{
temp= vec[right];
vec[right]= vec[max];
vec[max]= temp;
}
}
}
- 选择排序法及其优化
- 选择排序法及其优化
- 选择排序及其优化
- 选择排序及其优化方案
- 选择排序和插入排序及其优化
- 排序(2)——选择排序及其优化
- 冒泡排序法及其优化
- 选择排序法的优化
- 选择排序法的优化
- 快速排序及其优化
- 快速排序及其优化
- 冒泡排序及其优化
- 插入排序及其优化
- 希尔排序及其优化
- 冒泡排序及其优化
- 冒泡排序及其优化
- 快速排序及其优化
- 冒泡排序及其优化
- [HDU 4855 Goddess] 同号单调函数求和+三分
- hdu 3359 Kind of a Blur
- 数学建模高级方法(十):时间序列模型
- cocos2d-x基本知识点(1)
- hostname 配置文件
- 选择排序法及其优化
- 强大的Mockito测试框架
- linux date
- 查看linux系统版本
- 递归算法详细分析-> C
- javadoc时候乱码-编码 GBK 的不可映射字符
- 简单工厂模式
- 递归算法——汉诺塔问题
- Java4Android之HttpClient入门使用代码集