首页 > 编程语言 > 详细

冒泡排序c语言

时间:2021-03-28 22:30:20      阅读:45      评论:0      收藏:0      [点我收藏+]
void swap(int* a, int* b)    //交换函数
{
	int temp;
	temp = *b;
	*b = *a;
	*a = temp;
}

void bubble_sort(int a[],int n)  //用冒泡排序将a中的数据重新排列成从小到大的顺序
{
	bool change;               //change表示当前是否为正序,true为非正序,false则为正序
	for (int i = 0,change=true; i < n&&change; i++)
	{//i为执行的趟数,j为每趟过程中比较操作的索引
		change = false;
		for (int j =0; j < n-i-1; j++)
		{
			if (a[j] > a[j + 1])
			{
			        swap(&a[j], &a[j + 1]);
				change = true;
			}
		}
	}
}//change的使用可以使得程序在数据已经正序,但趟数未进行完全时,提前终止趟数扫描
int main()
{
	int n;
	printf("请输入数组长度:\n");
	scanf_s("%d", &n);
	int *a=(int*)malloc((sizeof(int))*n);
	printf("请依次输入数组元素:\n");
	for (int i = 0; i < n; i++)
	{
		scanf_s("%d", &a[i]);
	}
	bubble_sort(a, n);
	printf("从小到大排序结果为:\n");
	for (int i = 0; i < n; i++)
	{
		printf("%d ",a[i]);
	}
	free(a);
	return 0;
}

执行结果:

技术分享图片

冒泡排序c语言

原文:https://www.cnblogs.com/luguoqingting/p/14589598.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!