这个简单的排序数组代码有什么错误?
what is the mistake in this simple sorting array code?
我是编码领域的一名新生。我试图理解数组的概念。我写了一个排序数组的代码。我将附上我的代码。请描述上面的错误是什么。
#include<stdio.h>
void main(){
int a[5]={25,3,4,56,2};
int i,j,temp;
for(i=0;i<5-1;i++){
for(j=1;j<5;j++){
if(a[i]>a[j]){
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
for(i=0;i<5;i++){
printf("%d ",a[i]);
}
}
输出:依次为2,25,56,3,4。
这一行有问题:
for(j=1;j<5;j++){
改为:
for(j=i+1;j<5;j++){
否则它将交换之前排序的元素。固定版本开始查看第一个元素 在 正在处理的元素之后。
我是编码领域的一名新生。我试图理解数组的概念。我写了一个排序数组的代码。我将附上我的代码。请描述上面的错误是什么。
#include<stdio.h>
void main(){
int a[5]={25,3,4,56,2};
int i,j,temp;
for(i=0;i<5-1;i++){
for(j=1;j<5;j++){
if(a[i]>a[j]){
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
for(i=0;i<5;i++){
printf("%d ",a[i]);
}
}
输出:依次为2,25,56,3,4。
这一行有问题:
for(j=1;j<5;j++){
改为:
for(j=i+1;j<5;j++){
否则它将交换之前排序的元素。固定版本开始查看第一个元素 在 正在处理的元素之后。