+ 1
What's wrong with this code?
#include <stdio.h> void bubble_sort (int a[], int n) { int i = 0, j = 0, tmp; for (i = 0; i < n; i++) { // loop n times - 1 per element for (j = 0; j < n - i - 1; j++) { // last i elements are sorted already if (a[j] > a[j + 1]) { // swop if order is broken tmp = a[j]; a[j] = a[j + 1]; a[j + 1] = tmp; } } }} main() { int a[100], n, i, d, swap; printf("Enter number of elements in the array:\n"); scanf("%d", &n); printf("Enter %d integers\n", n); for (i = 0; i < n; i++) scanf("%d", &a[i]); bubble_sort(a, n); printf("Printing the sorted array:\n"); for (i = 0; i < n; i++) printf("%d\n", a[i]); return 0;}
2 Answers
+ 7
Here's the same code but a little bit more readable:
#include <stdio.h>
void bubble_sort (int a[], int n){
int i = 0, j = 0, tmp;
for (i = 0; i < n; i++) { // loop n times - 1 per element
for (j = 0; j < n - i - 1; j++){ // last i elements are sorted already
if (a[j] > a[j + 1]) { // swop if order is broken
tmp = a[j];
a[j] = a[j + 1];
a[j + 1] = tmp;
}
}
}
}
main() {
int a[100], n, i, d, swap;
printf("Enter number of elements in the array:\n");
scanf("%d", &n);
printf("Enter %d integers\n", n);
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
bubble_sort(a, n);
printf("Printing the sorted array:\n");
for (i = 0; i < n; i++)
printf("%d\n", a[i]);
return 0;
}
It is the exactly same one as yours, and it works just fine. Maybe the input method is wrong: make sure you input your numbers as such:
3
3 2 1
Another example:
5
6 4 3 1 2 8
+ 4
Could you save your code on Sololearn and paste the link here, please?