选择排序算法

时间:2022-04-06 02:34:17

今天闲来无事,复习了一下选择排序算法
算法基本原理:
一次选定数组中的每一个数,记下当前位置并假设它是从当前位置开始后面数中的最小数min=i,从这个数的下一个数开始扫描直到最后一个数,并记录下最小数的位置min,扫描结束后如果min不等于i,说明假设错误,否则交换min与i位置上数。
C算法实现:

选择排序算法选择排序算法Code

详细分析:

1 选择排序算法for  (i = 0 ;i < n;i ++ )
2 选择排序算法选择排序算法      {
3选择排序算法    min=i;
4选择排序算法        ……
5选择排序算法     }

该段代码一次选定数组中的每一个数,记下当前位置并假设它是从当前位置开始后面数中的最小数min=i;

1 选择排序算法for ( int  j = i + 1 ;j < n;j ++ )
2 选择排序算法选择排序算法      {
3选择排序算法        if (a[j]<a[min])
4选择排序算法        min=j;
5选择排序算法     }

从上一层循环的min=i这个数的下一个数开始扫描,并进行数值得比较直到最后一个数,并记录下最小数的位置min

1 选择排序算法if  (i != min)
2 选择排序算法选择排序算法 {
3选择排序算法  temp=a[i];
4选择排序算法  a[i]=a[min];
5选择排序算法  a[min]=temp;
6选择排序算法}

在第二个循环扫描结束后如果min不等于i,说明假设错误,保持原值未知不变,否则交换min与i位置上数据
实际测试:

选择排序算法选择排序算法Code

测试结果
个数:6
数据:10 25 3 0 56 88
第一组显示的是原始输入的数据和数据对应的内存地址
第二组显示的经过选择排序后的数据和数据对应的内存地址
选择排序算法

reference
http://baike.baidu.com/view/547263.htm