欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数组经典.3.冒泡排序

程序员文章站 2022-07-15 16:27:58
...

冒泡排序是不断将相邻的数两两比较,将小数交换到前面(冒泡),大数交换到后面(沉底)。假定数组a有N个元素,第一轮将a[0]与a[1]比较,a[1]与a[2]比较…最后a[N-2]与a[N-1]比较。这一轮比较下来,最大的元素交换到下标最大元素a[N-1],这个元素已排好序。第二轮仍然从a[0]开始,将次大元素交换到a[N-2]、最后一轮只用比较a[0]和a[1],将次大元素交换到a[1],整个排序结束,共进行N-1轮比较。
函数代码如下.

void bub_sort(int a[N])
	{
		int i,j,t;
		for(i=1; i<=N-1; i++)		/*N个数共循环N-1轮*/
			for(j=0; j<N-i; j++)	/*每轮比较N-i次,第一轮N-1次,最后一轮1次*/ 
				if(a[j]>a[j-1])		/*相邻元素两两比较,若大数在前则交换*/ 
				{t=a[j]; a[j]=a[j+1]; a[j+1]=t;}
	}

在调用子函数时,实参是数组名

主程序代码

#include <stdio.h>
#define N 10
void bub_sort(int a[N]);
int main()
{
	int a[N],i;
	printf("请输入%d个数:\n",N);	
	for(i=0; i<N; i++) scanf("%d",&a[i]);
	bub_sort(a);	/*调用冒泡排序子函数*/
	printf("排序后:");
	for(i=0; i<N; i++) printf("%3d",a[i]); 
	printf("\n");
	return 0;
}
void bub_sort(int a[N])
{
	int i,j,t;
	for(i=1; i<=N-1; i++)		/*N个数共循环N-1轮*/
		for(j=0; j<N-i; j++)	/*每轮比较N-i次,第一轮N-1次,最后一轮1次*/ 
			if(a[j]> a[j+1])	/*相邻元素两两比较,若大数在前则交换*/ 
			{t=a[j]; a[j]=a[j+1]; a[j+1]=t;}
}
相关标签: 经典题目