实现一个对整形数组的冒泡排序(冒泡排序法)

目录

冒泡排序法的原理:

代码实现:

运行结果:

代码分析:

函数实现代码:

运行结果:



冒泡排序法的原理

重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小)错误就把他们交换过来,走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。

例如  {2,1,4,5,7,3,6}

经过第一次走访,变为{1,2,4,5,3,6,7}

经过第二次,变为{1,2,4,5,3,6,7}

经过第三次,变成{1,2,4,3,5,6,7}

........

经过6次,排序完成

代码实现:

#include <stdio.h>

int main()
{
	int arr[10] = { 1,3,5,7,9,2,4,6,8,10 };

	int sz = sizeof(arr) / sizeof(arr[0]);
	int k = 0;

	for (k = 0; k < sz - 1; ++k)
	{
		int i = 0;
		for (i = 0; i < sz-1; ++i)
		{
			if (arr[i] > arr[i + 1])
			{
				int temp = arr[i + 1];
				arr[i + 1] = arr[i];
				arr[i] = temp;
			}
		}
	}

	int j = 0;

	for (j = 0; j < sz; ++j)
	{
		printf("%d ", arr[j]);
	}

	return 0;
}

运行结果:

代码分析:

#include <stdio.h>

int main()
{
	int arr[10] = {1,3,5,7,9,2,4,6,8,10};    //创建一个整形数组

	int sz = sizeof(arr) / sizeof(arr[0]);    //计算数组的大小

	int k = 0;    //用k变量来控制所需走访的次数

	for (k = 0; k < sz-1; ++k)//    走访次数应为数组元素个数减一
	{
		int i = 0;//    i变量来控制数组内部不符合顺序元素的交换
		for (i = 0; i < sz-1; ++i)
		{
			if (arr[i] > arr[i + 1])
			{
				int temp = arr[i + 1];   //用temp来当中间变量来交换相邻两个元素
				arr[i + 1] = arr[i];
				arr[i] = temp;
			}
		}
	}
	int j = 0;
	for (j = 0; j < sz; ++j)   //输出打印该数组
	{
		printf("%d ", arr[j]);
	}
	return 0;
}

函数实现代码:

void boild(int arr[10], int sz)
{
	int k = 0;

	for (k = 0; k < sz - 1; ++k)
	{
		int i = 0;

		for (i = 0; i < sz - 1; ++i)
		{
			if (arr[i] > arr[i + 1])
			{
				int temp = arr[i + 1];

				arr[i + 1] = arr[i];

				arr[i] = temp;
			}
		}
	}
}
#include <stdio.h>

int main()
{
	int arr[10] = {1,3,5,7,9,2,4,6,8,11};

	int sz = sizeof(arr) / sizeof(arr[0]);

	boild(arr, sz);

	int j = 0;

	for (j = 0; j < sz; ++j)
	{
		printf("%d ", arr[j]);
	}

	return 0;
}

运行结果:

猜你喜欢

转载自blog.csdn.net/2301_77509762/article/details/130533614