当前位置 : 主页 > 手机开发 > harmonyos >

C语言 — 冒泡排序

来源:互联网 收集:自由互联 发布时间:2023-08-28
前言 冒泡排序:实现一个对整形数组的排序 使用冒泡排序对数组进行升序排序 [c语言代码]代码程序在文章末尾 如果有帮助, 还请各位小伙伴多多点赞关注收藏,后期会持续进行更新


前言

冒泡排序:实现一个对整形数组的排序

使用冒泡排序对数组进行升序排序

[c语言代码]代码程序在文章末尾

如果有帮助,还请各位小伙伴多多点赞关注收藏,后期会持续进行更新!!!

目录

前言

什么是冒泡排序

代码思路讲解(逐步讲解)

使用冒泡排序的次数

第一趟冒泡排序

第二趟冒泡排序

运行结果

代码实现


什么是冒泡排序

C语言 — 冒泡排序_数据结构

 (小编很懒~~~)

代码思路讲解(逐步讲解)

使用冒泡排序的次数

数组有n个元素(这里以数组里有10个整形元素)

就要进行n-1次冒泡排序(就要进行9次冒泡排序)

要进行9趟冒泡排序 ,用for循环语句进行,代码如下

int i = 0;
    int sz = sizeof(arr) / sizeof(arr[0]);//对数组元素计算 sz=10
	for (i = 0; i < sz - 1; i++)//数组里有10个元素,要进行9套冒泡排序
	{
		
        //这里是一趟冒泡循环代码

	}

第一趟冒泡排序

C语言 — 冒泡排序_开发语言_02

 (这里用有序数组进行讲解,方便进行理解)

这里 9 在第一位    要完成升序  9应该在最后一位

9与8进行比较   如果前一个数字比后一个数字大进行交换

9从第一位到最后要进行9次交换 

int i = 0;
    int sz = sizeof(arr) / sizeof(arr[0]);//对数组元素计算 sz=10
	for (i = 0; i < sz - 1; i++)//数组里有10个元素,要进行9套冒泡排序
	{
		int j = 0;
		for (j = 0; j <sz-1-i ; j++)//第一套冒泡排序要进行9次,第二套8次,用减i来进行递减;
		{
			if (arr[j] > arr[j + 1])
			{
				int tem = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = tem;
			}
		}
	}

第二趟冒泡排序

C语言 — 冒泡排序_开发语言_03

 这里9是数组里最大的元素,通过一趟冒泡排序到了最后一位,现在进行0~8之间的排序

8是数组中第二大的应该在倒数第二位

要进行8次交换

 ...

以下依次冒泡排序进行少一次交换

运行结果

C语言 — 冒泡排序_排序算法_04

代码实现

【编译器vs2019】

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void mpao(int arr[10],int sz)
{
	int i = 0;

	for (i = 0; i < sz - 1; i++)//数组里有10个元素,要进行9套冒泡排序
	{
		int j = 0;
		for (j = 0; j <sz-1-i ; j++)//第一套冒泡排序要进行9趟,第二套8趟,用减i来进行递减;
		{
			if (arr[j] > arr[j + 1])
			{
				int tem = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = tem;
			}
		}
	}
 }
int main()
{
	int arr[10] = {0};
	
	int i = 0;
	int sz = sizeof(arr) / sizeof(arr[0]);
	for (i = 0; i < sz; i++)
	{
		scanf("%d", &arr[i]);
	}
	
	mpao(arr,sz);
	
	for (i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]);
	}
	return 0;
}
上一篇:【C语言】 数组的应用实例:三子棋游戏
下一篇:没有了
网友评论