C 两个对数组进行排序的代码应该是相同的,don';T

C 两个对数组进行排序的代码应该是相同的,don';T,c,arrays,sorting,C,Arrays,Sorting,尝试按升序对同一数组进行排序 我不明白这两种代码之间的区别。结果是不同的,因为在第二个代码中,最大的数字立即出现在最后一个位置,而在第一个代码中,最小的数字出现在第一个位置。这就像是相反的方法。但我不明白代码的区别在哪里,可能是因为我是个新手 这两个代码中最好的代码是什么 第一个代码: #include <stdio.h> #define SIZE 10 int main(){ unsigned int array[] = {3,1,9,6,0,54,4,12,52,44

尝试按升序对同一数组进行排序

我不明白这两种代码之间的区别。结果是不同的,因为在第二个代码中,最大的数字立即出现在最后一个位置,而在第一个代码中,最小的数字出现在第一个位置。这就像是相反的方法。但我不明白代码的区别在哪里,可能是因为我是个新手

这两个代码中最好的代码是什么

第一个代码:

#include <stdio.h>

#define SIZE 10

int main(){
    unsigned int array[] = {3,1,9,6,0,54,4,12,52,44};

    for (unsigned int i=0;i<=SIZE-1;++i){
        for (unsigned int j=i+1;j<=SIZE-1;++j){
            if (array[i] > array[j]){
                int hold = array[i];
                array[i] = array[j];
                array[j] = hold;
            }
        }
        printf("At the @%d pass:\n", i);
        for (unsigned int k=0; k<=SIZE-1; ++k){
            printf("%d\n", array[k]);
        }
        puts("");
    }
}
    for (unsigned int i=0;i<=SIZE-1;++i){
        for (unsigned int j=i+1;j<=SIZE-1;++j){
            if (array[i] > array[j]){
                int hold = array[i];
                array[i] = array[j];
                array[j] = hold;
            }
        }
        .......
第二个代码:

#include <stdio.h>

#define SIZE 10

int main(){
    unsigned int array[] = {3,1,9,6,0,54,4,12,52,44};

    for (unsigned int pass=1;pass<SIZE;++pass){
        for (size_t i=0;i < SIZE-1; ++i){
            if (array[i] > array[i+1]){
                int hold = array[i];
                array[i] = array[i+1];
                array[i+1] = hold;
            }
        }
        printf("At the @%d pass:\n", pass);
        for (unsigned int k=0; k<=SIZE-1; ++k){
            printf("%d\n", array[k]);
        }
        puts("");
    }
}
    for (unsigned int pass=1;pass<SIZE;++pass){
        for (size_t i=0;i < SIZE-1; ++i){
            if (array[i] > array[i+1]){
                int hold = array[i];
                array[i] = array[i+1];
                array[i+1] = hold;
            }
        }
        ......

请看第一段代码:

#include <stdio.h>

#define SIZE 10

int main(){
    unsigned int array[] = {3,1,9,6,0,54,4,12,52,44};

    for (unsigned int i=0;i<=SIZE-1;++i){
        for (unsigned int j=i+1;j<=SIZE-1;++j){
            if (array[i] > array[j]){
                int hold = array[i];
                array[i] = array[j];
                array[j] = hold;
            }
        }
        printf("At the @%d pass:\n", i);
        for (unsigned int k=0; k<=SIZE-1; ++k){
            printf("%d\n", array[k]);
        }
        puts("");
    }
}
    for (unsigned int i=0;i<=SIZE-1;++i){
        for (unsigned int j=i+1;j<=SIZE-1;++j){
            if (array[i] > array[j]){
                int hold = array[i];
                array[i] = array[j];
                array[j] = hold;
            }
        }
        .......

在这种情况下,内部循环比较两个连续的元素,如果条件满足,则交换它们。这是冒泡排序

第一个类似于选择排序,第二个类似于冒泡排序。有区别,但不是真正的“相反的方法”。第二种方法从1开始,第一种方法从0开始?您还应该为每个算法创建函数,因为内部循环从不同的索引开始。在第一个代码中,使用两个循环变量进行交换。在第二段代码中,只使用内部循环变量进行交换,内部循环解析整个数组。它们不是相同的代码,但它们给出相同的最终结果。不同的代码-不同的部分排序。为什么它们是一样的呢?还要注意,第一个代码需要9个过程来排序,第二个代码只需要4个过程。