排序算法《一》冒泡排序



学了这么久的C语言发现C语言的算法非常的多,特别是排序算法,在编程中的应用非常广泛,如:冒泡排序、选择排序、希尔排序 等等,

今天向大家介绍排序中的一种最基本的排序,“冒泡排序”

冒泡排序是排序中非常基本的排序,也是非常重要的排序

因为排序时像水泡一样一个一个向上冒故此得名

基本思想:

将下面的数据按照从小到大的顺序排列

27 36 32 18 5


排序前:

27 36 32 18 5


第一趟:

第1次:27<36不变

27 36 32 18 5


第2次:36>32交换

27 32 36 18 5


第3次:36>18交换

27 32 18 36 5


第4次:36>5交换

27 32 18 5 36


第二趟:

第1次:27<32不变

27 32 18 5 36


第2次:32>18交换

27 18 32 5 36


第3次:32>5交换

27 18 5 32 36


第三趟:

第1次:27>18交换

18 27 5 32 36


第2次:27>5交换

18 5 27 32 36


第四趟:

第1次:18>5交换

5 18 27 32 36


排序后的结果:

5 18 27 32 36


算法代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
	int a[] = { 27, 36, 32, 18, 5};


	int temp;//中间变量
	int i, j;//用于for循环

	printf("排序前的数据:");

	for (i = 0; i < sizeof(a) / sizeof(int); i++)//打印排序前的数据
	{
		printf("%d ", a[i]);
	}

	printf("\n");//换行

	for (i = 0; i< sizeof(a) / sizeof(int) - 1; i++)//排序的趟数
	{
		for (j = 0; j < sizeof(a) / sizeof(int) - i - 1; j++)//每趟的次数
		{
			if (a[j]>a[j + 1])//当后一个数小于前一个数时
			{
				temp = a[j];//交换两个数
				a[j] = a[j + 1];
				a[j + 1] = temp;
			}
		}
	}

	printf("\n排序后的数据:");

	for (i = 0; i < sizeof(a) / sizeof(int); i++)//打印排序后的数据
	{
		printf("%d ", a[i]);
	}

	printf("\n\n");//换行

	system("pause");
}

执行结果:

排序算法《一》冒泡排序_第1张图片

你可能感兴趣的:(排序算法《一》冒泡排序)