关于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;
}
}