請大家看一下這個冒泡排序法哪里錯了 我覺得沒毛病啊
#include <stdio.h>
#define N 10
int d(int score[])
{
? ? int i;
? ? int j;
? ? for(i=8;i>=0;i++)
? ? {
? ? ? ? for(j=0;j<=i;j++)
? ? ? ? {
? ? ? ? ? ? if(score[j]<score[j+1])
? ? ? ? ? ? {
? ? ? ? ? ? ? ? int mtc;
? ? ? ? ? ? ? ? mtc=score[j];
? ? ? ? ? ? ? ? score[j]=score[j+1];
? ? ? ? ? ? ? ? score[j+1]=mtc;
? ? ? ? ? ? }
? ? ? ? }? ??
? ? }
? ??
? ? for(i=0;i<10;i++)
? ? {
? ? ? ? if(i!=9)
? ? ? ? {
? ? ? ? ? ? printf("%d,",score[i]);
? ? ? ? }
? ? ? ? else
? ? ? ? {
? ? ? ? ? ? printf("%d",score[i]);
? ? ? ? }
? ? }
? ? return 0;
}
int main()
{
? ? int score[N]={67,98,75,63,82,79,81,91,66,84};
d(score);
return 0;
2019-03-10
排序父循環(huán)i--,不是自加
2019-06-25
我用的冒泡是這樣寫的
#include<stdio.h>
int main()
{
????????????????int i[]={0,.7,2,3,5,4,1,6,9}
????????????????int a = sizeof(i)/sizeof(i[0])-1;//這個占的字符長度除以類型也就是數(shù)組里面的個數(shù),-1是循環(huán)次數(shù)
????????????????iht b = 1;
????????????????int c;
????????????????while(b)
????????????????{
????????????????????????????b = 0;//不能變成死循環(huán)對吧
????????????????????????????for(c=0;c<a;c++)
????????????????????????????{
????????????????????????????????????? ? if(i[c]<i[c+1])
????????????????????????????????????????{
????????????????????????????????????????????????????buf ? ? ? = i[c];
????????????????????????????????????????????????????i[c] ? ? ? = i[c+1];
????????????????????????????????????????????????????i[c+1] ? = buf;
????????????????????????????????????????????????????b = 1; //如果有比較給b為真
? ? ?????????????????????????????????????}
????????????????????????????}
????????????????????????????a--;//應(yīng)為每次比較完之后最大的值會存在最前面,所以為了占內(nèi)存?
????????????????}? ?
????????????????for(a=0;a<sizeof(i)/sizeof(i[0]);a++)
????????????????{
????????????????????????????printf("%d\t",i[a]);
????????????????}
????????????????return 0;
????????????? ? getchar();//應(yīng)為我用的是VS編譯器.
}
2019-06-25
把i++改成i--(這種細(xì)節(jié)我也老錯)?
2019-03-16
第一個for循環(huán)是死循環(huán)