#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;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoKCnZvaWQgYnViYmxlU29ydChjaGFyICpwU3RyaW5nUG9pbnRlcnNbXSwgaW50IHNpemUpOwp2b2lkIGluc2VydGlvblNvcnQoY2hhciAqcFN0cmluZ1BvaW50ZXJzW10sIGludCBzaXplKTsKdm9pZCBBcnJheVRlc3QoY2hhciBzdHJpbmdbXVsxMDBdLGludCBzaXplKTsKCnZvaWQgc3dhcChjaGFyICoqcFN0cmluZzEsIGNoYXIqKnBTdHJpbmcyKTsKCmludCBtYWluIChpbnQgYXJnYywgY29uc3QgY2hhciAqYXJnc1tdKXsKICAgIGNoYXIgKnBTdHJpbmdzW109eyJqZWZmIiwgImJvYiIsImtlbGxpIiwiYmlsbCIsImpvZSJ9OwogICAgY2hhciB0ZXN0QXJyYXlbXVsxMDBdPXsiamVmZiIsICJib2IiLCJrZWxsaSIsImJpbGwiLCJqb2UifTsKICAgIEFycmF5VGVzdCh0ZXN0QXJyYXksNSk7CgogICAgaW5zZXJ0aW9uU29ydChwU3RyaW5ncywgNSk7CgogICAgcmV0dXJuIDA7Cn0KCgovL1N0YXJ0IEFsZ29yaXRobXMKCnZvaWQgQXJyYXlUZXN0KGNoYXIgc3RyaW5nW11bMTAwXSwgaW50IHNpemUpewogICAgcHJpbnRmKCJcblxTdGFydCB2YWx1ZXM6XG4iKTsKCiAgICBmb3IgKGludCBpPTA7aTxzaXplO2krKyl7CiAgICAgICAgcHJpbnRmKCI6JXNcbiIsc3RyaW5nW2ldKTsgICAKICAgIH0KCn0KCgovLyAgQnViYmxlIFNvcnQgU3RhcnQKCnZvaWQgYnViYmxlU29ydChjaGFyICpwU3RyaW5nUG9pbnRlcnNbXSwgaW50IHNpemUpewoKICAgIGNoYXIgdW5zb3J0ZWQ9MTsKCiAgICB3aGlsZSh1bnNvcnRlZCl7CiAgICAgICAgdW5zb3J0ZWQ9MDsKICAgICAgICBmb3IoaW50IGk9MTtpPHNpemU7aSsrKXsKICAgICAgICAgICAgaWYoc3RyY21wKHBTdHJpbmdQb2ludGVyc1tpLTFdLHBTdHJpbmdQb2ludGVyc1tpXSk+MCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgc3dhcCgmKHBTdHJpbmdQb2ludGVyc1tpLTFdKSwgJihwU3RyaW5nUG9pbnRlcnNbaV0pKTsKICAgICAgICAgICAgICAgIHVuc29ydGVkPTE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cgp9CgovLyAgQnViYmxlIFNvcnQgRW5kCgoKLy8gIEluc2VydGlvbiBTb3J0IFN0YXJ0Cgp2b2lkIGluc2VydGlvblNvcnQoY2hhciAqcFNbXSwgaW50IHNpemUpewogICAgaW50IGksajsKCiAgICBmb3IoaT0xO2k8c2l6ZTtpKyspewogICAgICAgIHByaW50ZigiXG5cbkl0ZXJhdGlvbiBTdGFydDpcbiIpOwogICAgICAgIGZvciAoaW50IGo9MDtqPHNpemU7aisrKXsKICAgICAgICAgICAgcHJpbnRmKCI6JXNcbiIscFNbal0pOyAgIAogICAgICAgIH0KICAgICAgICBqPWktMTsKICAgICAgICB3aGlsZShqPj0wJiZzdHJjbXAocFNbal0scFNbaisxXSk+MCl7CiAgICAgICAgICAgIHN3YXAoJihwU1tqKzFdKSwmKHBTW2pdKSk7CiAgICAgICAgICAgIGotLTsKICAgICAgICB9CiAgICB9CiAgICAgICAgcHJpbnRmKCJcblxuRW5kIHJlc3VsdDpcbiIpOwogICAgICAgIGZvciAoaW50IGo9MDtqPHNpemU7aisrKXsKICAgICAgICAgICAgcHJpbnRmKCI6JXNcbiIscFNbal0pOyAgIAogICAgICAgIH0KfQoKCgovLyAgSW5zZXJ0aW9uIFNvcnQgRW5kCgoKLy9FbmQgQWxnb3JpdGhtcwoKdm9pZCBzd2FwKGNoYXIgKipwU3RyaW5nMSwgY2hhciAqKnBTdHJpbmcyKXsKICAgIGNoYXIgKnRlbXA9KnBTdHJpbmcxOwogICAgKnBTdHJpbmcxPSpwU3RyaW5nMjsKICAgICpwU3RyaW5nMj10ZW1wOwp9