选择排序的算法

本文介绍了一种简单直观的排序算法——选择排序,并提供了详细的实现步骤和示范代码。选择排序通过不断选择序列中的最小元素,逐步构建起最终的有序序列。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 选择排序的算法是,对一个数据序列data[m..n],选择出一个最小的和data[m]交换。这样经过n-1次选择,数据序列将会变成有序。即第一次从data[1..n]选择一个最小的,放到data[1]这个位置,第二次从data[2..n]选择出一个最小的,放到data[2]这个位置,这样重复到第n-1次,从data[n-1..n]选择出一个最小的,放到data[n-1]这个位置。这样数据就从小到大有序排列了。反过来说,每次选择出的是最大的,那就是从大到小排列的。

下面看看示范代码:

//---------------选择排序--------------------------------
template<typename T>
void selectpass(T *data,unsigned len,unsigned pos)
{//一趟选择排序,从data[pos..len-1]选出最小的记录并和data[pos]交换
unsigned i=pos;
for(unsigned j=pos+1; j<len; j++ )
{
   
//按升序排列,如果按降序排序则用( data[j] > data[i])
   if( data[j] < data[i] )
   
{
    i 
= j;
   }

}

if( i != pos )
{
   T t 
= data[i];
   data[i] 
= data[pos];
   data[pos] 
= t;
}

}


template
<typename T>
void selectsort(T *data,unsigned len)
{//选择排序,进行len-1趟选择,每次从data[i..len-1]中选择出一个最小的记录
for( unsigned i=0; i<len-1; i++ )
{
   selectpass( data, len, i );
}

}

//-------------end of 选择排序----------------------------------


int _tmain(int argc, _TCHAR* argv[])
{
int arr[] = {100,5,1,3,11,3,6,-1};
selectsort( arr, 
sizeof(arr)/sizeof(arr[0]) );
return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值