冒泡排序就是利用沉浮定理来的。将大数上浮,小数下沉。或者相反。
这种算法就是每次比较一趟,将最值依次往后放。
比如说:
有一组数 :9,7,4,2,3,6,4,8,1 共九个数
冒泡就是这样实现的。先第一个数与第2个数比,数大就给后面,那么依次比最,大数自然会放最后面
第1次 7 4 2 3 6 4 8 1 9
第2次 4 2 3 6 4 7 1 8 9
第3次 2 3 4 4 6 1 7 8 9
第4次 2 3 4 4 1 6 7 8 9
第5次 2 3 4 1 4 6 7 8 9
第6次 2 3 1 4 4 6 7 8 9
第7次 2 1 3 4 4 6 7 8 9
第8次 1 2 3 4 4 6 7 8 9
结果是:
1 2 34 4 6 7 8 9
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
main()
{
int n;
char str[100];
int i,j;
char temp;
printf("please input the string\n");
scanf("%s",str);
n=strlen(str);
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(str[i]>str[j])
{
temp=str[i];
str[i]=str[j];
str[j]=temp;
}
}
}
printf("the result is:%s",str);
printf("\n");
return 0;
}
时间复杂度O(n^2)。空间复杂度O(1)稳定性强