Compare it to this:
Code:
#include <stdio.h>
#include <string.h>
void quicksort(char newList[][20], int lo, int hi);
int main(void) {
int i;
char newList[10][20];
strcpy(newList[0], "hello");
strcpy(newList[1], "adam");
strcpy(newList[2], "banana");
strcpy(newList[3], "dog");
strcpy(newList[4], "cheese");
strcpy(newList[5], "worm");
strcpy(newList[6], "ruler");
strcpy(newList[7], "water");
strcpy(newList[8], "oval");
strcpy(newList[9], "stinky");
for(i=0;i<10;i++)
printf("%s\n",newList[i]);
quicksort(newList,0,9);
printf("\n\n");
for(i=0;i<10;i++)
printf("%s\n",newList[i]);
return 0;
}
void quicksort(char newList[][20], int lo, int hi) {
int i=lo; // even=0;
int j=hi;
if(lo == hi) return;
char pivot[20],temp[20];
strcpy(pivot,newList[(lo+hi)/2]);
// Split the array into two parts
do {
while (strcmp(newList[i], pivot) < 0) i++;
while (strcmp(newList[j], pivot) > 0) j--;
if (i<=j) {
strcpy(temp,newList[i]);
strcpy(newList[i],newList[j]);
strcpy(newList[j],temp);
++i;
--j;
}
} while(i<=j);
//printf("lo:%d j:%d i:%d hi:%d \n",lo,j,i,hi); //Sleep(20);
if (lo < j) quicksort(newList,lo, j);
if (i < hi) quicksort(newList,i, hi);
}