3冒泡排序

算法入门 专栏收录该内容
4 篇文章 0 订阅

所谓冒泡排序法,就是对一组数字进行从大到小或者从小到大排序的一种算法。具体方法是,相邻数值两两交换。从第一个数值开始,如果相邻两个数的排列顺序与我们的期望不同,则将两个数的位置进行交换(对调);如果其与我们的期望一致,则不用交换。重复这样的过程,一直到最后没有数值需要交换,则排序完成。一般地,如果有N个数需要排序,则需要进行(N-1)趟。

设数组长度为N。

1.比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。

2.这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。

3.N=N-1,如果N不为0就重复前面二步,否则排序完成。

/************************

          入门版程序

************************/
<pre name="code" class="cpp">void sort( int s[ ] , int n )
{
    
    for( i = 1; i < n; i++)
    {
        for( j = 1; j < n; j++)
        {    
            if( a[j] > a[j + 1] )
            {
                t = a[j];
                a[j] = a[j+1];
                a[j+1] = t;
            }
        }
    }
}
 
<pre name="code" class="cpp"><span style="font-size:18px;">优化版,设置一个标志,如果这一趟发生了交换,则为true,否则为false。明显如果有一趟没有发生交换,说明排序已经完成。</span>
void sort( int s[ ] , int n ){   int i,  j,  t ;

   bool flag;

   flag = TRUE;

   while( flag )

  {

         glag = FALSE;

         for( i = 1; i < n; i++)        {             for( j = 1; j < n; j++)                {                            if( a[j] > a[j + 1] )                         {                             t = a[j];                             a[j] = a[j+1]

                             a[j+1] = t;

                            flag = TRUE;

                        }                }    }

}

}

 

main()
{
    int i, j, t, a[11];
    printf("INPUT 10 NUM : \n");
    for( i = 1; i < N; i++)
        scanf("%d",&a[i]);
    printf("The num is : \n");
    for( i = 1; i < N; i++)
        printf("%5d",a[i]);
    printf("\n");        

   

    sort (  a, 10)

    printf("the sorted num : \n");
    for( i =1; i <= 10; i++)
        printf("%5d",a[i]);
    printf("\n");
}   


  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值