编写冒泡排序,排序一个×××数组
冒泡法:对于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;
}
转载于:https://blog.51cto.com/luoyafei/1712342