关于C中的冒泡排序

关于C中的冒泡排序,c,C,这是我的代码: //bubble sort #include<stdio.h> int main(){ int a[11]; int temp; int i,j; //input for(i=1;i<=10;i++){ scanf("%d",&a[i]); } //sort for(i=1;i<10;i++){ //the number of number for(j=1;j<10-i;j++) //--

这是我的代码:

//bubble sort

#include<stdio.h>
int main(){
    int a[11];
    int temp;
    int i,j;
//input

for(i=1;i<=10;i++){
    scanf("%d",&a[i]);
}

//sort

for(i=1;i<10;i++){  //the number of number
    for(j=1;j<10-i;j++) //--
        if(a[j]<a[j+i]){
            temp=a[j];
            a[j]=a[j+1];
            a[j+1]=temp;
        }
}

//output
for(i=1;i<=10;i++){
    printf("%d ",a[i]);
}

getchar();
getchar();
return 0;
//冒泡排序
#包括
int main(){
INTA[11];
内部温度;
int i,j;
//输入
对于(i=1;i两件事:

打字错误(我相信):


如果(a[j]

注意数组是基于零的-在所有情况下都应该从
i=0
开始-似乎只需要10个数字,所以每次迭代都需要从
0..9
开始,
int a[10]的数组就足够了

假设您希望bubblesort输出从最低到最高排序,则算法应为:

for(i=0; i < 10; i++){
    for(j=0; j < 10 - i - 1; j++) // Because we are looking ahead one cell, -1
        if(a[j] > a[j+1]){ // next cell
            temp=a[j];
            a[j]=a[j+1];
            a[j+1]=temp;
        }
}
(i=0;i<10;i++)的
{
对于(j=0;j<10-i-1;j++)//因为我们展望的是一个单元格,-1
如果(a[j]>a[j+1]){//下一个单元格
温度=a[j];
a[j]=a[j+1];
a[j+1]=温度;
}
}

也就是说,在第一次通过后,最高的数字将出现在
a[9]
中。下一个循环将在
a[8]
中设置下一个最高值。等等。

我放弃了a[0],那么代码是错的吗?请深吸一口气,谢谢!答案是对的!但是我使用的第二条领带是的,基于1的索引不会导致错误,如果你对所有代码都应用相同的方法。另一个人已经更正了它!但无论如何,谢谢!好的,看起来你在进行反向排序,即递减数字。请记住尝试并输入尽可能多的信息关于下次需要什么:)
if(a[j]<a[j+1]){
 for(j=1;j<10-i;j++) 
 for(j=1;j<10-i+1;j++)
for(i=0; i < 10; i++){
    for(j=0; j < 10 - i - 1; j++) // Because we are looking ahead one cell, -1
        if(a[j] > a[j+1]){ // next cell
            temp=a[j];
            a[j]=a[j+1];
            a[j+1]=temp;
        }
}