冒泡排序法

【问题描述】

冒牌排序法,输入n(n<=10)个正整数,将他们从小到大排序后输出,要求使用冒泡排序算法,来使序列从小到大输出

【输入形式】

7 3 66 3 -5 22 -77 2

【输出形式】

-77 -5 2 3 3 7 22 66


注意要点(解题方法或易错区域):

1) 要学习到冒泡排序法的思维是如何的。我的理解是,不断地把在循环范围内的最大的数向右递送n次,第一次就可以将最大值递送到最右边,然后每一次的循环都是要减小递送次数,找到第二大的数,则是递送n-1次,依次向右递送,减小递送次数,定好最右边的数,不断从右往左找到数字

2)此方法需要消耗的时间较长,如果数字较多的话,需要消耗的内存就较大,循环的时间长,但是还是要多了解一些解题的方法,多些选择就可以更好的运用涌现在脑中的方法了

3)冒泡排序法肯定是要使用数组的方式的,且要使用指针的swap函数来调换递送转换的两个值的位置,还可以利用void函数直接输出


#include<stdio.h>
void bubble(int a[],int n) ;
void swap(int *px,int *py);
#define Max 10
int main()
{
    int n;
    int a[Max];
    int i;
    scanf("%d",&n);
    for(i=0;i<n;i++)
        {
            scanf("%d",a[i]);
        }
    bubble(a,n);
    for(i=0;i<n;i++)
        {
            printf("%d",a[i]);
        }
    return 0;
}
void bubble(int a[],int n) 
{
    int i,j;
    int t;
    for(i=1;i<n;i++)
        {
            for(j=0;j<n-i;j++)
                {
                    if(a[j]>a[j+1])
                    {
                         swap(&a[j],&a[j+1]);
                    }
                }
        }


}
void swap(int *px,int *py)
{
    int t;
    t=*px;
    *px=*py;
    *py=t;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值