冒泡排序

一、问题描述:

 

二、设计思路:

 冒泡排序注意下标的越界问题,如果定义的相邻元素是a[j]、a[j+1]那么下标的取值范围是0~n-2,如果定义的相邻元素是a[j-1]、a[j]那么下标的取值范围为0~n-1

三、程序流程图:

 

四、代码实现:

#include<stdio.h>
int main()
{
    int a[10000];
    int i;
    int N;
    int temp;
    printf("请输入N个数:");
     scanf("%d",&N);
    for(i=0;i<N;i++)
    {
       scanf("%d",&a[i]);
    }
    for(i=0;i<N;i++)
    {
    for(int j=0;j<N-i-1;j++)
        {
        if(a[j]>a[j+1])
        {
            temp=a[j+1];
            a[j+1]=a[j];
            a[j]=temp;
        }
        }
    }
    for(i=0;i<N;i++)
    {
        printf("%3d",a[i]);
    }
    return 0;
}

 这样做需要先输入N的值,数组的大小也不好改,可以改进一下,采用宏定义来定义N,数组大小改变时只用改变N的大小

#include<stdio.h>
#define N 10
int main()
{
    int a[N];
    int i;
    int temp;
    int cout=0;
    printf("请输入N个数:");
    for(i=0;i<N;i++)
    {
       scanf("%d",&a[i]);
    }
    for(i=0;i<N;i++)
    {
    for(int j=0;j<N-i-1;j++)
      {
        if(a[j]>a[j+1])
        {
            temp=a[j+1];
            a[j+1]=a[j];
            a[j]=temp;
        }
      }
    }
    for(i=0;i<N;i++)
    {
        cout++;
        printf("%3d",a[i]);
        if(cout%4==0)
        {
            printf("\n");
        }
    }
    return 0;
}

 经常用到冒泡排序,是每个软工人必须掌握的一个排序方式,后面还会讲更多排序方法,让我们锁定直播间,准时收看软件拓荒人的最新博客,咱们下次再见

posted @ 2023-04-21 07:58  软件拓荒人  阅读(36)  评论(0)    收藏  举报