使用工具:
Dev-C++ 5.11
解题思路:
“起泡法”思路为:将相邻两个数比较,将较小的调到前头,较大的放到后头。经过1轮比较后,最大的数便调到最后一个位置。所以n个数要比较n-1趟,在第j趟中要进行n-j次比较。
- 下面以一个整型数组中的6个数为例演示进行第1趟比较的情况:
我们可以写一个双层循环,外层循环控制趟数,内层循环控制每两个数比较的次数,再在里面写上执行两个值交换的代码即可,这样一来,我们只需要一个数组即可解决问题。
参考代码:
#include<stdio.h>
#include<string.h>
int main()
{
void Bubble(char a[]);
char a[11]={0};
printf("Input ten characters:");
for(int i=0;i<10;i++)
scanf("%c",&a[i]);
Bubble(a);
printf("Sorting complete↓%s",a);
return 0;
}
void Bubble(char a[])//afternoon
{
int w;//外面 ,趟数
int n;//里面 ,次数
char temp;
int len = strlen(a);
for(w=0;w<len-1;w++)
{
for(n=0;n<len-1-w;n++)
{
if(a[n]>a[n+1])
{
temp=a[n];
a[n]=a[n+1];
a[n+1]=temp;
}
}
}
}
运行结果: