选择排序

菜鸡的选择排序(selectionSort)

选择排序算法是冒泡排序算法的一种改进。
从下到大为例。用一个变量k做标记,记录最小值的下标。
排序时,先用k记录第一个数的下标,然后循环遍历用k与数组后面的数比较,找到最小值的下标,并用k记录,然后交换第一个数与此时得到k(如果第一个数不是最小值,那么此时k的值已改变为最小值的下标)所代表的数,第一轮结束后,便找到最小值。然后继续寻找,知道排序完成。

下面就看代码吧

void selectionSort(int a[],int lenth)               
{                                                   
 int i,j,k,temp = 0;                             
 for(i = 0; i < lenth; i++){                     
  k = i;                                      
  for(j = i + 1; j < lenth; j++){             
   if(a[k] > a[j]){                        
    k = j;                              
   }                                       
  }                                           
  temp = a[k];                                
  a[k] = a[i];                                
  a[i] = temp;                                
 }                                               
 for(i = 0; i < 10; i++){                        
  if(i % 5 == 0 && i != 0){                   
   cout << endl;                           
  }                                           
  cout << a[i] << " ";                        
 }                                               
}                                                   
                                                    
int main()                                          
{                                                   
 int a[10] = {95,8,58,4,15,1,57,41,57,4};        
 selectionSort(a,10);                            
 return 0;                                       
}                                                   

最后说一下,选择排序是一种不稳定算法,因为
选择排序可能会打乱两个相同数字原有的顺序
如果想要了解算法的稳定性。请点击下面的链接
排序算法的稳定性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值