14. 数据结构进阶十四排序实现之简单选择排序

本文介绍了一种基础排序算法——简单选择排序。通过逐步解析算法原理和过程,文章提供了详细的源码实现,并展示了如何通过该算法对整数数组进行升序排列。

14. 数据结构进阶十四排序实现之简单选择排序

           “即是我们是一支蜡烛也应该 " 蜡烛成灰泪始干 " 即使我们只是一根火柴也要在关键时刻有一次闪耀即使我们死后尸骨都腐烂了解也要变成磷火在荒野中燃烧。 -- 艾青”

           继续来看什么是简单选择排序。

1.  简单选择排序

设所排序序列的记录个数为n。i取1,2,…,n-1,从所有n-i+1个记录(Ri,Ri+1,…,Rn)中找出排序码最小的记录,与第i个记录交换。执行n-1趟后就完成了记录序列的排序。

2.  代码

代码比较简单,详看源码。

执行后如下:

 

 

 

3.  源码

#include"stdio.h"

/**

* 数组的最小值

*

* @return int 数组的键值

*/ 

int SelectMinKey(inta[],intn, inti

           int k= i

           for(intj=i+1 ;j< n;++j) { 

                     if(a[k]> a[j]) k = j; 

           } 

           returnk; 

 

/**

* 选择排序

*

*/ 

void selectSort(inta[],intn){ 

           intkey, tmp; 

           for(int i= 0; i< n; ++i) { 

                     key= SelectMinKey(a, n,i);           //选择最小的元素 

                     if(key!= i){ 

                                tmp= a[i]; a[i] = a[key];a[key]= tmp; //最小元素与第i位置元素互换 

                     } 

 

           } 

int main(){ 

           inta[8] = {3,1,5,7,2,4,9,6}; 

           printf("初始值:"); 

           for(intj= 0; j<8; j++){ 

                     printf("%d",a[j]); 

           } 

           printf("\n排序后:\n");       

           selectSort(a,8); 

           for(intj= 0; j<8; j++){ 

                     printf("%d",a[j]); 

           } 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值