我们技术人员的《泡沫》冒泡排序

image

“美丽的泡沫 虽然一刹花火,你所有承诺 虽然都太脆弱,但爱像泡沫 如果能够看破,有什么难过。”

在《泡沫》之中,邓紫棋将自己对于爱情的认知,通过旋律和歌词,淡淡的像我们展示出来。

爱情拥有着泡沫的美丽,却也同时拥有着泡沫的脆弱,多少唯美的爱情因承受不住现实的摧残,最后变成了一生的遗憾。

爱情需要经济基础的加固,经济基础,决定上层建筑,没有物质的爱情,注定是要破灭。但我们每一个人却同时羡慕爱情的美丽,我们只用搞好自己的基础,搞好自己的经济。

搞好经济,对于咱们搞技术的小伙伴而言,努力学习编程方面的知识,才是重中之重。今天,咱们一起探讨一下:冒泡排序。

任何排序方式,目的都是找到一组数字正确的顺序,例如下面一组

image

我们今天的排序,之所以叫做冒泡排序,它也同时遵守着泡沫的一些规则:大的泡沫在下面,小的泡沫在上面。

冒泡排序的本质:相邻元素进行比较,如果前面的元素数值大于面后的元素数值就交换,否则继续往后移一位。

第一轮:

image

经过第一轮 77这个最大的数字放在了序列的最后面,我们可以执行下一轮,并且不需要对最后一个数字进行比较。现在的序列为:

image

第二轮

image

在进行下一轮,这轮产生的新的数据序列为

image

第三轮:

image

在进行下一轮,这轮产生的新的数据序列为

image

第四轮:

image

在进行下一轮,这轮产生的新的数据序列为

image

最后一轮:-4 < 2 不交换 ,结束排序。

冒泡排序的规律:从这个例子中还可以总结出,如果有 n 个数据,那么只需要比较 n–1 轮。而且除了第一轮之外,每轮都不用全部比较。因为经过前面轮次的比较,已经比较过的轮次已经找到该轮次中最大的数并浮到右边了,所以右边的数不用比较也知道是大的。

代码如下:

# include <stdio.h>
int main(void)
{
    int a[6] = {900, 2, 3, -58, 34, 76};
    int i;  //比较的轮数
    int j;  //每轮比较的次数
    int buf;  //交换数据时用于存放中间数据
    for (i=0; i<5; ++i)  //比较n-1轮 n为数组的长度
    {
        for (j=0; j<5-i; ++j)  //每轮比较n-1-i次,
        {
            if (a[j] > a[j+1])
            {
                buf = a[j];
                a[j] = a[j+1];
                a[j+1] = buf;
            }
        }
    }
    for (i=0; i<6; ++i)
    {
        printf("%d ", a[i]);
    }
    printf("\n");
    return 0;
}

微信公众号 JAVA在左 美文在右 更多精彩等你来发现哦

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容