I was trying to implement bubble sort algorithm to sort a 10 element array. I've tried writing the code below and it doesn't seem wrong, but it doesn't sort the elements at all.
Could someone give me a hand?
This is the code:
`
#include <stdio.h>
#define DIM 10
int main() {
int arr[DIM] = {1, 5, 6, 8, 7, 9, 3, 2, 4, 10};
int tmp;
puts("Original array: ");
for (int i = 0; i < DIM; i ) {
printf("=", arr[i]);
}
// Bubble sort
for (int i = 0; i < DIM - 1; i) {
for (int j = 0; j < DIM - i - 1; j) {
// Compare two elements and swap if first > second
// Use of tmp variable (temporary)
if (arr[i] > arr[i 1]) {
tmp = arr[i];
arr[i] = arr[i 1];
arr[i 1] = tmp;
}
}
}
puts("");
puts("Ascending order arrray: ");
for (int i = 0; i < DIM; i ) {
printf("=", arr[i]);
}
puts("");
}
`
CodePudding user response:
In the second loop, j
should be used instead of i
if (arr[j] > arr[j 1]) {
tmp = arr[j];
arr[j] = arr[j 1];
arr[j 1] = tmp;
}
CodePudding user response:
Use j in the body of the second loop instead of i.`
// Bubble sort
for (int i = 0; i < DIM - 1; i) {
for (int j = 0; j < DIM - i - 1; j) {
// Compare two elements and swap if first > second
// Use of tmp variable (temporary)
if (arr[j] > arr[j 1]) {
tmp = arr[j];
arr[j] = arr[j 1];
arr[j 1] = tmp;
}
}
}