src/headers/bubble.h
#ifndef BUBBLE #define BUBBLE #include <stdbool.h> #include <stdio.h> #include <string.h> char** bsort(unsigned int, char**); void swap(const char** values, const unsigned int idx); #endif
src/bubble.c
#include <bubble.h> /* * This method will sort the list of items that it is given using the simple * yet slow Bubble sort algorithm. */ char** bsort(const unsigned int count, char** values) { unsigned int i, j, moveCount = 0, swapCount = 0; char* tmp; printf("sorting a list of %i values\n", count); for(j=count; j > 0; j--) { for(i = 0; i < j - 1; i++) { printf("\n%i:\tcomparing %s to %s ", moveCount++, values[i], values[i+1]); if(strcmp(values[i], values[i + 1]) > 0) { swap((const char**) values, (const unsigned int) i); ++swapCount; } } } printf("\nsorting %i items required %i swaps", count, swapCount); return values; } /** * Swap the string at values[idx] with values[idx+1] */ void swap(const char** values, const unsigned int idx) { const char* tmp = (const char*)values[idx]; values[idx] = values[idx + 1]; values[idx + 1] = tmp; printf("swap made"); }
- make
- bin/sorting bubble 9 8 7 6 5 4 3 2 1 0
method: 0 -> bubble sorting a list of 10 values 0: comparing 9 to 8 swap made 1: comparing 9 to 7 swap made 2: comparing 9 to 6 swap made 3: comparing 9 to 5 swap made 4: comparing 9 to 4 swap made 5: comparing 9 to 3 swap made 6: comparing 9 to 2 swap made 7: comparing 9 to 1 swap made 8: comparing 9 to 0 swap made 9: comparing 8 to 7 swap made 10: comparing 8 to 6 swap made 11: comparing 8 to 5 swap made 12: comparing 8 to 4 swap made 13: comparing 8 to 3 swap made 14: comparing 8 to 2 swap made 15: comparing 8 to 1 swap made 16: comparing 8 to 0 swap made 17: comparing 7 to 6 swap made 18: comparing 7 to 5 swap made 19: comparing 7 to 4 swap made 20: comparing 7 to 3 swap made 21: comparing 7 to 2 swap made 22: comparing 7 to 1 swap made 23: comparing 7 to 0 swap made 24: comparing 6 to 5 swap made 25: comparing 6 to 4 swap made 26: comparing 6 to 3 swap made 27: comparing 6 to 2 swap made 28: comparing 6 to 1 swap made 29: comparing 6 to 0 swap made 30: comparing 5 to 4 swap made 31: comparing 5 to 3 swap made 32: comparing 5 to 2 swap made 33: comparing 5 to 1 swap made 34: comparing 5 to 0 swap made 35: comparing 4 to 3 swap made 36: comparing 4 to 2 swap made 37: comparing 4 to 1 swap made 38: comparing 4 to 0 swap made 39: comparing 3 to 2 swap made 40: comparing 3 to 1 swap made 41: comparing 3 to 0 swap made 42: comparing 2 to 1 swap made 43: comparing 2 to 0 swap made 44: comparing 1 to 0 swap made sorting 10 items required 45 swaps 0 1 2 3 4 5 6 7 8 9As you can see straight away it does take a lot of swapping to sort a relatively simple list
No comments:
Post a Comment