在c中的冒泡排序中获得不同的输出
gettting different output in bubble sort in c
嘿,我是 dsa 的新手,所以我正在学习冒泡排序,但我的输出不同,请参阅下面的代码
输出应该是:7,12,21,70,83
我的输出是:12,7,70,21,83
这是不正确的
#include <stdio.h>
void bubble_sort(int duparray[], int num) {
int temp, i, j;
for (i = 0; i < num - 1; i++) { // i means number of passes
for (j = 0; j < num - 1 - i; j++) {
if (duparray[i] > duparray[i + 1]) {
temp = duparray[i];
duparray[i] = duparray[i + 1];
duparray[i + 1] = temp;
}
}
}
for (int i = 0; i < num; i++) {
printf("%d ", duparray[i]);
}
}
void display(int duparray[], int num) {
for (int i = 0; i < num; i++) {
printf("%d ", duparray[i]);
}
}
int main() {
int array[5] = { 70, 12, 7, 83, 21 };
int n = 5;
display(array, n);
printf("\n");
bubble_sort(array, n);
// display(array, n);
return 0;
}
for 循环看起来应该是这样的
for( i=0;i<num-1;i++){// i means number of passes
for( j=0;j<num-1-i;j++){
if(duparray[j]>duparray[j+1]){
temp=duparray[j];
duparray[j]=duparray[j+1];
duparray[j+1]=temp;
}
}
即使用j
和j+1
作为被比较和交换的元素的索引。请注意,i
在内循环中不会更改,因此您的代码只是重复比较相同的两个元素。
如果您进行更改,则输出将是
70 12 7 83 21
7 12 21 70 83
嘿,我是 dsa 的新手,所以我正在学习冒泡排序,但我的输出不同,请参阅下面的代码
输出应该是:7,12,21,70,83
我的输出是:12,7,70,21,83
这是不正确的
#include <stdio.h>
void bubble_sort(int duparray[], int num) {
int temp, i, j;
for (i = 0; i < num - 1; i++) { // i means number of passes
for (j = 0; j < num - 1 - i; j++) {
if (duparray[i] > duparray[i + 1]) {
temp = duparray[i];
duparray[i] = duparray[i + 1];
duparray[i + 1] = temp;
}
}
}
for (int i = 0; i < num; i++) {
printf("%d ", duparray[i]);
}
}
void display(int duparray[], int num) {
for (int i = 0; i < num; i++) {
printf("%d ", duparray[i]);
}
}
int main() {
int array[5] = { 70, 12, 7, 83, 21 };
int n = 5;
display(array, n);
printf("\n");
bubble_sort(array, n);
// display(array, n);
return 0;
}
for 循环看起来应该是这样的
for( i=0;i<num-1;i++){// i means number of passes
for( j=0;j<num-1-i;j++){
if(duparray[j]>duparray[j+1]){
temp=duparray[j];
duparray[j]=duparray[j+1];
duparray[j+1]=temp;
}
}
即使用j
和j+1
作为被比较和交换的元素的索引。请注意,i
在内循环中不会更改,因此您的代码只是重复比较相同的两个元素。
如果您进行更改,则输出将是
70 12 7 83 21
7 12 21 70 83