C语言冒泡排序算法代码详解

 更新时间:2022年01月20日 14:20:42   作者:程序员弘羽  
大家好,本篇文章主要讲的是C语言冒泡排序算法代码详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下

今天我们来用C语言实现一下冒泡排序

首先我们来了解一下什么叫做冒泡排序,冒泡顾名思义把质量轻的气体(如二氧化碳一样)浮到水面上(如可乐中的二氧化碳),因此冒泡排序的原理就是N个元素在一个周期中,微观上依次进行两两元素的比较,小的元素就被放在前面,大的元素放在后面,以此来进行N-1个周期,来完成冒泡排序。

上文中的一个周期,即外循环,依次进行比较,即内循环。

文字看着很迷糊?没事儿,上图

如图所示,两两元素依次进行比较,小的元素往前移动,大的元素往后移动,直至元素顺序是升序的形式,即移动了 元素-1 个周期

图看明白了,还不知道该怎么写代码?这就上!

#include <stdio.h>
#include <string.h>
 
int main()
{
	int n[9] = { 3,1,6,5,9,7,8,2,4 };
	int nums = sizeof(n) / sizeof(int), temp, i;
	for (i = 1; i < nums ; i++) {//外层循环,表示来回多少次
		for (int j = nums - 1; j >= i; j--)	//内层循环,表示一次来回会对比多少次,注意数组下标,不要越界
		{						
			printf("目前i的值:%d ", i);
			printf("目前j的值:%d ", j);
			if (n[j-1] > n[j]) {
				temp = n[j-1];
				n[j-1] = n[j];
				n[j] = temp;
			}
			printf("该次交换后的结果:");
			for (int a = 0; a < nums; a++) {
				printf("%d  ", n[a]);
			}
			printf("\n\n");
		}
	}
	printf("最终交换后的结果:");
	for (int a = 0; a < nums; a++) {
		printf("%d  ", n[a]);
	}
	printf("\n");
}

代码同时把每次循环的结果都进行了输出,方便观察排序的结果,同时也可以和图片进行比较

这里对代码一些小细节进行一下说明

首先就是sizeof()函数,这个函数使用时必须要引用头文件string.h,他的用法就是计算内容的字节,int型占4个字节 n数组有9个int型的元素,所以占36个字节,除以int型的4字节,就是他的数组元素个数。

有人会好奇,明明写了一个n[9]了,为什么要多此一举写一个这个计算表达式,其实在很多时候给的数组都不会是这么简单明了的,所以我们最好通过计算来算得数组元素的个数。

第二个问题就是,有些小白会卡在这个if判断语句这里,不知道怎么实现的

if (n[j-1] > n[j]) {
				temp = n[j-1];
				n[j-1] = n[j];
				n[j] = temp;
			}

其实很简单,就是找一个中间值。我们在这里假设要交换a,b两数的值,我们这里就要设置一个中间值,通常设置为temp,把a的值赋值到temp上(然后现在就相当于有两个a,此刻我们改变a本身的值,temp的值也不会改变),此时我们就可以把b的值赋予到a上面,这一步b对a的值传输已经结束,最后一步就是把temp的值赋予到b上。大功告成,a,b的值交换成功。

到此这篇关于C语言冒泡排序算法代码详解的文章就介绍到这了,更多相关C语言冒泡排序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • QT UDP网络编程实现简单消息传输

    QT UDP网络编程实现简单消息传输

    这篇文章主要为大家详细介绍了QT UDP网络编程实现简单消息传输,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • C语言课程设计之抽奖系统

    C语言课程设计之抽奖系统

    这篇文章主要为大家详细介绍了C语言课程设计之抽奖系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12
  • 浅谈C++20新增内容

    浅谈C++20新增内容

    C++20 是 C++ 语言的一次重大更新,它引入了许多新特性,本文主要介绍了浅谈C++20新增内容,具有一定的参考价值,感兴趣的可以了解一下
    2025-04-04
  • C++实现加减乘除计算器

    C++实现加减乘除计算器

    这篇文章主要为大家详细介绍了C++实现加减乘除计算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下<BR>
    2022-01-01
  • 基于C中含有if的宏定义详解

    基于C中含有if的宏定义详解

    本篇文章是对C中含有if的宏定义进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C++中声明类的class与声明结构体的struct关键字详解

    C++中声明类的class与声明结构体的struct关键字详解

    这篇文章主要介绍了C++中声明类的class与声明结构体的struct关键字,默认情况下结构的所有成员均是公有的,而类的所有成员是私有的,需要的朋友可以参考下
    2016-01-01
  • 解析linux 文件和目录操作的相关函数

    解析linux 文件和目录操作的相关函数

    以下是对linux中文件和目录操作的相关函数进行了详细的分析介绍,需要的朋友可以过来参考下
    2013-08-08
  • C++ 中 <iterator> <functional> <numeric> 库好用的函数详解

    C++ 中 <iterator> <functional>&nbs

    这篇文章主要介绍了C++ 中 <iterator> <functional> <numeric> 库好用的函数,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-11-11
  • C++设计模式编程之Flyweight享元模式结构详解

    C++设计模式编程之Flyweight享元模式结构详解

    这篇文章主要介绍了C++设计模式编程的Flyweight享元模式结构,享元模式在实现过程中主要是要为共享对象提供一个存放的"仓库"(对象池),需要的朋友可以参考下
    2016-03-03
  • 深入探索C++中stack和queue的底层实现

    深入探索C++中stack和queue的底层实现

    这篇文章主要介绍了C++中的stack和dequeue的底层实现,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09

最新评论