冒泡排序

本文介绍了冒泡排序,这是一种简单的排序算法。通过不断两两比较并交换相邻元素,将最大(或最小)的元素逐步推到序列末尾,直至所有元素排序完成。文中通过一个具体的示例详细展示了冒泡排序的过程,并解释了测试代码中的关键点。
摘要由CSDN通过智能技术生成

今天学习一下冒泡排序。
冒泡排序是学习计算机的时候,比较简单的一个排序算法,它的过程就是依次的两两比较挨着的元素,如果他们的顺序是错误的,就交换他们的位置,直到把最大(或最小)的元素放在最后一个位置。然后继续重复的再次两两比较,把次大的元素放在倒数第二个位置上,到最后,把所有的元素放在正确的位置上,这就会好像气泡依次往上浮一样。

下面是一个例子。
初始序列A[5]={【4】,2,0,3,1}
第一次:比较A【0】=4 与A【1】=2, 这时4>2,顺序错误,交换A【0】与A【1】的位置如下所示:
A【5】={2,【4】,0,3,1}

第二次:比较A【1】=4与A【2】=0,这时4>2,顺序错误,交换A【1】与A【2】的位置如下所示:
A【5】={2,0,【4】,3,1}

第三次:比较A【2】=4与A【3】=3,这时4>3,顺序错误,交换A【2】与A【3】的位置如下所示:
A【5】={2,0,3,【4】,1}

第四次:比较A【3】=4与A【4】=1,这时4>1,顺序错误,交换A【3】与A【4】的位置如下所示:
A【5】={2,0,3,1【4】}

此时数组中最大的元素4就放在了数组最后的位置上,然后就是重复上述过程:
放置次大元素:
A【5】={0,【2】,3,1,4}
A【5】={0,2,【3】,1,4}
A【5】={0,2,1,【3】,4}

放置第三大元素:
A【5】={0,2,13,4}
A【5】={0,【2】,1,3,4}
A【5】={0,1,【2】,3,4}

.
.
.
最后
A【5】={0,1,2,3,4}
最后写一段测试代码:

#include<stdio.h>
void bubble_sort(int A[],int size);//冒泡排序函数声明
int main()
{
    int a[13]={3,2,4,0,1,9,6,12,5,7,34,22,11};//初始序列
    bubble_sort(a,13);//调用冒泡排序
    int j=0;
    while(j<13)//输出排好序的数组
    {
        printf("%d\n",a[j]);
        j++;
    }

    return 0;
}
void bubble_sort(int A[],int size)//冒泡排序
{
    int i,j;
    for(i =0;i<size-1;i++)//控制要排第几个元素 为什么是size-1?
    {
        for(j=0;j<size-i-1;j++)//控制两两交换 为什么是(size-i-1)?
        {
            if(A[j]>A[j+1])//如果A[j]>A[j+1],交换两者位置
            {
                int temp;
                temp = A[j];
                A[j]=A[j+1];
                A[j+1]=temp;
            }
        }
    }
}

为什么是(size-1)而不是size?因为虽然有size个元素要排序,但是如果(size-1)个元素已经排好了,那么第size个元素也就确定了,所以只要排好前(size-1)个就好了

为什么是(size-i-1),因为,如果已经有3(假设)个元素放在了正确的位置上,实际下次要排序的元素就是(size-3-1)个了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值