编写冒泡排序,排序一个×××数组

冒泡法:对于n个数进行从小到大冒泡排序,一共需要冒泡n-1次。两两进行比较,每冒泡排序一次,最大值在最下边(最后一个位置)。

比如:

87 12 56 45 78

87和12交换:12 87 56 45 78

87和56交换:12 56 87 45 78

87和45交换:12 56 45 87 78

87和78交换:12 56 45 78 87

到此第一趟排序结束,接下来的每一趟排序都是这样。

代码如下:

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

void bubble(int str[],int len)
{
	int i,j,temp;
	for(i=0;i<len-1;i++)//进行len-1趟比较
	{
		for(j=0;j<len-1-i;j++)//进行len-1-i次两两比较
		{
			if(str[j]>str[j+1])
			{
				temp=str[j];//交换两个数
				str[j]=str[j+1];
				str[j+1]=temp;
			}
		}
	}
}

int main()
{
    int arr[10],len,i;
	for(i=0;i<10;i++)//输入整型数组
	{
		scanf("%d",&arr[i]);
	}
	len=sizeof(arr)/sizeof(arr[0]);
	bubble(arr,len);
	for(i=0;i<len;i++)//输出整型数组
	{
		printf("%d ",arr[i]);
	}
	system("pause");
	return 0;
}

使用冒泡排序,排序多个字符串。

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

int main()
{
	char *str[] = { "bdea","bade","decd","asdf" };//此处应定义为指针数组
	int len = sizeof(str) / sizeof(str[0]);
	int i, j;
	for (i = 0; i < len - 1; i++)
	{
		for (j = 0; j < len - i - 1; j++)
		{
			if (strcmp(str[j], str[j + 1])>0)
			{//字符串进行比较,并交换大小,从小到大排序
				char*temp = str[j];
				str[j] = str[j + 1];
				str[j + 1] = temp;
			}
		}
	}
	for (i = 0; i < len; i++)
	{
		printf("%s ", str[i]);
	}
	system("pause");
	return 0;
}