c语言实现【冒泡排序】,常用排序算法

题目

本栏目是数据结构C语言版的十大排序算法,因为我只考常用的一些排序算法,所以会只更新一部分常用算法,每个排序分为算法思想,算法代码和执行结果三个部分展现。

更新第六篇:C语言实现冒泡排序


以下是本篇文章正文内容,欢迎朋友们进行指正,一起探讨,共同进步。——来自考研路上的lwj。QQ:2394799692

一、算法思想

1.算法执行过程动图演示:

请添加图片描述

2.定义:

冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

3.算法思想:

比较相邻的元素。如果第一个比第二个大,就交换它们两个;
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;
针对所有的元素重复以上的步骤,除了最后一个;
重复步骤1~3,直到排序完成。

4.我的总结:

1,从最后一个元素开始两两对比,小的数应该在这两个数的最左边
2,一趟走完后,最小的那个数就冒到了最左边
3,如此往复,之前已冒泡到左边的元素不用参与对比,最多进行n-1趟,数组就有序了。

稳定性为:稳定
>时间复杂度为:
好的情况:O(n)
坏的情况:O(n^2)
>空间复杂度为: O(1)

5.学习笔记:

请添加图片描述

二、代码部分

1.引入库

代码如下(示例):

#include<stdio.h>

2.主函数部分

代码如下(示例):

void sort(int a[], int n)
{
	for (int i = 0; i < n - 1; i++)//原则上要进行n-1趟排序
	{
		int f = 0;//用于做标识
		for(int j=n-1;j>i;j--)//从最后一个到i遍历
			if (a[j - 1] > a[j])//左边大于右边时交换
			{
				int tmp = a[j - 1]; a[j - 1] = a[j]; a[j] = tmp;
				f = 1;
			}
		if (f == 0)break;//如果本趟排序未发送交换,说明表已有序
	}
}
void main()
{
	int a[] = { 1,4,7,3,6,9,2,5,8 };
	int n = sizeof(a) / sizeof(int);
	sort(a, n);
	for (int i = 0; i < n; i++)
		printf("%d ", a[i]);
}

三、执行结果

在这里插入图片描述

输入:

a[] = { 1,4,7,3,6,9,2,5,8 };

输出:

1 2 3 4 5 6 7 8 9
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

立志冲海大

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值