菜鸡的生存之路

计数排序算法的个人理解

个人理解,如果有误,欢迎留言
话不多说,直接上代码
计数排序思想就是先一个比原数组a中最大的那个元素还要大的数组b,并将数组初始化为0,然后通过循环遍历,将a数组的值作为b数组的下标,并将下标对应的那个值由0变为1,最后通过循环遍历将b数组中值不为0的下标输出(记得输出的是b数组的下标而非值)

#include <iostream>                              
using namespace std;                             
                                                 
int main()                                       
{                                                
 int a[10] = {49,1,98,5,31,61,67,34,9,16};    
 int i,max = a[0];                            
 for(i = 1; i < 10; i++){                     
  if(max < a[i]){                          
   max = a[i];                          
  }                                        
 }                                            
 int b[max+1];                                
 for(i = 0; i < max+1;i++){                   
  b[i] = 0;                                
 }                                            
 for(i = 0;i < 10; i++){                      
  b[a[i]]++;                               
 }                                            
 for(i = 0;i < max+1; i++){                   
  if(b[i] != 0){                           
   cout << i << " ";                    
  }                                        
 }                                            
 return 0;                                    
}                                                
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值