这个简单的排序数组代码有什么错误?

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++){

否则它将交换之前排序的元素。固定版本开始查看第一个元素 正在处理的元素之后。