C语言 冒泡法数组排序

方案一:

# include <stdio.h>
# include <stdlib.h>
# include <time.h>
int main (void)
{
int i,n,j,temp;
printf("Enter a number n : ");
scanf("%i",&n);
int a[n];
srand((unsigned)time(NULL));
for (i=0;i<n;i++)
        a[i]=rand()%100+1;
for (i=0;i<n;i++)
        printf("%4i",a[i]);
printf("\n");
for (i=0;i<n;i++)
        {
                for (j=i;j<n-1;j++)
                {
                        if (a[i]>a[j+1])
                                {
                                temp = a[i];
                                a[i] = a[j+1];
                                a[j+1] = temp;
                                }
                }
        }

for (i=0;i<n;i++)
        printf("%4i",a[i]);
printf("\n ");
return 0;
}

方案二:

# include <stdio.h>
# include <stdlib.h>
# include <time.h>
int *bubble (int *a,int n)
{
        int i,j,temp;
        for (i=0;i<n;i++)
        {
                for (j=i;j<n-1;j++)
                {
                if (a[i] > a[j+1])
                        swap( &a[i],&a[j+1]);
                }
        }
}

int swap ( int *a, int *b)
{
        int temp;
        if (*a > *b)
        {
                temp = *a;
                *a = *b;
                *b  = temp;
        }
}

int main (void)
{
        int i , n;
        printf("Enter a number n " );
        scanf("%i",&n);
        int a[n];
        srand((unsigned)time(NULL));
        for (i=0;i<n;i++)
                a[i]=rand()%100+1;
        for (i=0;i<n;i++)
                printf("%4i",a[i]);
        printf("\n");
        bubble(a,n);

        for (i=0;i<n;i++)
                printf("%4i",a[i]);
        printf("\n");
        return 0;
}

 

测试:

[root@localhost Gcc]# ./a.out
Enter a number n 10
  22  47  31  77  42  91  65  13  45  16
  13  16  22  31  42  45  47  65  77  91
[root@localhost Gcc]# ./a.out
Enter a number n 15
  24  68  49  12  14  65  34  73  67  79  14  73  16  10  54
  10  12  14  14  16  24  34  49  54  65  67  68  73  73  79

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值