Попытка отсортировать один и тот же массив в порядке возрастания.
Я не вижу разницы между этими двумя кодами. Результаты отличаются, потому что во втором коде наибольшее число сразу идет в последней позиции, в то время как в первом коде наименьшее число идет в первой позиции. Это как противоположный подход. Но я не понимаю, в чем разница в коде, возможно, потому что я новичок ie.
Кроме того, каков лучший код этих двух?
Первый код:
#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("");
}
}
Выход:
At the @0 pass:
0
3
9
6
1
54
4
12
52
44
At the @1 pass:
0
1
9
6
3
54
4
12
52
44
At the @2 pass:
0
1
3
9
6
54
4
12
52
44
At the @3 pass:
0
1
3
4
9
54
6
12
52
44
At the @4 pass:
0
1
3
4
6
54
9
12
52
44
At the @5 pass:
0
1
3
4
6
9
54
12
52
44
At the @6 pass:
0
1
3
4
6
9
12
54
52
44
At the @7 pass:
0
1
3
4
6
9
12
44
54
52
At the @8 pass:
0
1
3
4
6
9
12
44
52
54
At the @9 pass:
0
1
3
4
6
9
12
44
52
54
Второй код:
#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("");
}
}
Выход:
At the @1 pass:
1
3
6
0
9
4
12
52
44
54
At the @2 pass:
1
3
0
6
4
9
12
44
52
54
At the @3 pass:
1
0
3
4
6
9
12
44
52
54
At the @4 pass:
0
1
3
4
6
9
12
44
52
54
At the @5 pass:
0
1
3
4
6
9
12
44
52
54
At the @6 pass:
0
1
3
4
6
9
12
44
52
54
At the @7 pass:
0
1
3
4
6
9
12
44
52
54
At the @8 pass:
0
1
3
4
6
9
12
44
52
54
At the @9 pass:
0
1
3
4
6
9
12
44
52
54