排序法

1:气泡法排序

// 用气泡法为n个数排序(从大到小)
#include  < iostream >

using   namespace  std;

#define  N 5

int  main ()
{
    
int  a[N] = { 0 };
    
for ( int  i  =   0 ;i < N;i ++ )
    {
        cin
>> a[i];
    }
    
for ( int  j = 0 ;j < N - 1 ;j ++ ) // 交换轮数
         for ( int  i = 0 ;i < N - j - 1 ;i ++ ) // N-j次两个相邻数组元素的比较
        {
            
int  temp;
            
if (a[i] < a[i + 1 ])
            
            {
                temp
= a[i];
                a[i]
= a[i + 1 ];
                a[i
+ 1 ] = temp;
            }
        }

    
for ( int  i = 0 ;i < N;i ++ ) // 输出数组
    {
        cout
<< a[i] << ' ' ;
    }
    cout
<< endl;
    
return   0 ;
}

2:改进的冒泡排序

 

// 改进的冒泡排序法
// 当是9,8,7,5,6只要排序一次,开始的方法就会做很多重复的工作了
#include  < iostream >

using   namespace  std;

#define  N 5

int  main ()
{
    
int  a[N] = { 0 };
    
for ( int  i  =   0 ;i < N;i ++ )
    {
        cin
>> a[i];
    }
    
int  end = 0 ;
    
for ( int  j = 0 ;j < N - 1 &&! end;j ++ ) // 交换轮数
    {
        end
= 1 ; // end=1交换
         for ( int  i = 0 ;i < N - j - 1 ;i ++ ) // N-j次两个相邻数组元素的比较
        {
            
int  temp;
            
if (a[i] < a[i + 1 ])
            
            {
                temp
= a[i];
                a[i]
= a[i + 1 ];
                a[i
+ 1 ] = temp;
                end
= 0 ;
            }
        }
    }

    
for ( int  i = 0 ;i < N;i ++ ) // 输出数组
    {
        cout
<< a[i] << ' ' ;
    }
    cout
<< endl;
    
return   0 ;
}

 

3:选择法排序

// 选择法排序(从小到大)
#include  < iostream >

using   namespace  std;

#define  N 5

int  main ()
{
    
int  a[N] = { 0 };
    
    
for ( int  i = 0 ;i < N;i ++ )
    {
        cin
>> a[i];
    }
    
for ( int  i = 0 ;i < N;i ++ )
    {
        
int  p = i;
        
for ( int  j = i;j < N - 1 ;j ++ )
        {
            
int  temp;
            
if (a[p] > a[j + 1 ])
            {
                temp
= a[p];
                a[p]
= a[j + 1 ];
                a[j
+ 1 ] = temp;
            }
        }
    }
    
for ( int  i = 0 ;i < N;i ++ )
    {
        cout
<< a[i] << ' ' ;
    }
    cout
<< endl;
    
return   0 ;
}
注:哎。。昨天的代码直接复制过去了,这次用插入代码好看多了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值