How to implement the bubble sort algorithm in C

3 Answers

0 votes
#include <stdio.h>
  
void print_array(int arr[], int size);
void bubbleSort(int arr[], int len);
   
int main(void)
{
    int arr[] = {1, 7, 4, 2, 3, 5, 8, 6};
    int size = sizeof(arr) / sizeof(arr[0]);
      
    bubbleSort(arr, size);
      
    print_array(arr, size);
   
    return 0;
}
 
void bubbleSort(int arr[], int size) {
    int tmp, swap;
     
    for (int i = 0; i < size; i++) {
        swap = 0;
        for (int j = 0; j < size - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                tmp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = tmp;
                  
                swap = 1;
            }
        }
        // If the swap is 0 we didn't swap nothing = the array is sorted - we stop the loops
        if (swap == 0) break; 
    } 
}
   
void print_array(int arr[], int size) {
    int i;
      
    for (i = 0; i < size; i++) {
        printf("%2d", arr[i]); 
    }
} 
 
 
 
/*
run:
 
 1 2 3 4 5 6 7 8
 
*/


answered Apr 13, 2014 by avibootz
edited Jan 17, 2025 by avibootz
0 votes
#include <stdio.h>
 
void bubbleSort(int arr[], int len) {
    int tmp;
    
    for (int i = 0; i < len - 1; i++) {
        for (int j = 0; j < len - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
               tmp = arr[j];
               arr[j] = arr[j + 1];
               arr[j + 1] = tmp;
            }
        }
    }
}
 
int main(void) {
    int arr[] = {6, 8, 0, 3, 9, 1, 5, 4, 5};
    int length = sizeof(arr)/sizeof(arr[0]);  
           
    bubbleSort(arr, length);
    
    for (int i = 0; i < length; i++) {   
        printf("%d ", arr[i]);  
    }  
     
    return 0;
}



/*
run:

0 1 3 4 5 5 6 8 9 

*/

 



answered Jan 17, 2025 by avibootz
0 votes
#include <stdio.h>

void bubble_sort(int arr[], int size) {
    int swapped = 1;

    while (swapped) {
        swapped = 0;
        for (int i = 1; i < size; i++) {
            if (arr[i - 1] > arr[i]) {
                int temp = arr[i - 1];
                arr[i - 1] = arr[i];
                arr[i] = temp;
                swapped = 1;
            }
        }
        size -= 1;
    }
}

int main() {
    int arr[] = {1, 7, 0, 4, 2, 3, 5, 8, 6, 5};
    int size = sizeof(arr) / sizeof(arr[0]);

    bubble_sort(arr, size);
    
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }

    return 0;
}

 
 
/*
run:
 
0 1 2 3 4 5 5 6 7 8 
 
*/

 



answered Jan 17, 2025 by avibootz

Related questions

3 answers 214 views
1 answer 121 views
1 answer 78 views
1 answer 88 views
1 answer 104 views
1 answer 103 views
1 answer 144 views
...