.冒泡排序

34 阅读1分钟
//冒泡排序
void swap(int *a,int *b)
{
	int t;
	t=*a;
	*a=*b;
	*b=t;
}

void bubble(int num[],int n)
{
	int i,j;
	for(i=1;i<n;i++)
	{
		for(j=0;j<n-i;j++)
		{
			if(num[j]>num[j+1])
			{
				swap(&num[j],&num[j+1]);
			}
		}
	}
}


#include<stdio.h>
#define maxn 10
int main()
{
	int i,n,num[maxn];
	printf("请输入n:\n");
	scanf("%d",&n);
	printf("请输入n个数\n");
	for(i=0;i<n;i++)
	{
		scanf("%d",&num[i]);
	}
	bubble(num,n);
	printf("After sorted\n");
	for(i=0;i<n;i++)
	{
		printf("%3d",num[i]);
	}
	return 0;
}

该方法之所以叫冒泡排序,是因为在进行从小到大排序的过程中,小的数会经过交换慢慢地从底下“冒”出来。

但是冒泡排序的效率实际上并不高,因为它需要约(n^2)/2 次比较,不过对于小数组来说,它的性能还是可以接受的