#include <stdio.h>
#include <string.h>
#include <stdlib.h>


void bubbleSort(char *pStringPointers[], int size);
void insertionSort(char *pStringPointers[], int size);
void ArrayTest(char string[][100],int size);

void swap(char **pString1, char**pString2);

int main (int argc, const char *args[]){
    char *pStrings[]={"jeff", "bob","kelli","bill","joe"};
    char testArray[][100]={"jeff", "bob","kelli","bill","joe"};
    ArrayTest(testArray,5);

    insertionSort(pStrings, 5);

    return 0;
}


//Start Algorithms

void ArrayTest(char string[][100], int size){
    printf("\n\Start values:\n");

    for (int i=0;i<size;i++){
        printf(":%s\n",string[i]);   
    }

}


//  Bubble Sort Start

void bubbleSort(char *pStringPointers[], int size){

    char unsorted=1;

    while(unsorted){
        unsorted=0;
        for(int i=1;i<size;i++){
            if(strcmp(pStringPointers[i-1],pStringPointers[i])>0)
            {
                swap(&(pStringPointers[i-1]), &(pStringPointers[i]));
                unsorted=1;
            }
        }
    }

}

//  Bubble Sort End


//  Insertion Sort Start

void insertionSort(char *pS[], int size){
    int i,j;

    for(i=1;i<size;i++){
        printf("\n\nIteration Start:\n");
        for (int j=0;j<size;j++){
            printf(":%s\n",pS[j]);   
        }
        j=i-1;
        while(j>=0&&strcmp(pS[j],pS[j+1])>0){
            swap(&(pS[j+1]),&(pS[j]));
            j--;
        }
    }
        printf("\n\nEnd result:\n");
        for (int j=0;j<size;j++){
            printf(":%s\n",pS[j]);   
        }
}



//  Insertion Sort End


//End Algorithms

void swap(char **pString1, char **pString2){
    char *temp=*pString1;
    *pString1=*pString2;
    *pString2=temp;
}