You are viewing a single comment's thread. Return to all comments →
Here is my take on this.
int lexicographic_sort(const char* a, const char* b) { while (*(a) && *(b)) { if(*a > *b) return 1; if(*a < *b) return -1; a++; b++; }; if (*a) return 1; if (*b) return -1; return 0; } int lexicographic_sort_reverse(const char* a, const char* b) { while (*(a) && *(b)) { if(*a > *b) return -1; if(*a < *b) return 1; a++; b++; }; if (*a) return -1; if (*b) return 1; return 0; } int sort_by_number_of_distinct_characters(const char* a, const char* b) { int lena = strlen(a), lenb = strlen(b); char *arra = NULL, *arrb = NULL; char *arra_ad = NULL, *arrb_ad = NULL; int arra_sz = 0, arrb_sz = 0; const char *a_ad = a, *b_ad = b; arra = (char *)calloc(lena+1, sizeof(char)); arrb = (char *)calloc(lenb+1, sizeof(char)); arra_ad = arra; arrb_ad = arrb; while(*a || *b) { if (*a) { arra = arra_ad; while (*arra) { if(*a == *arra) goto founda; arra++; } arra_ad[arra_sz] = *a; arra_sz++; founda:; a++; } if (*b) { arrb = arrb_ad; while (*arrb) { if(*b == *arrb) goto foundb; arrb++; } arrb_ad[arrb_sz] = *b; arrb_sz++; foundb:; b++; } } free(arra_ad); free(arrb_ad); if(arra_sz > arrb_sz) return 1; if(arra_sz < arrb_sz) return -1; return lexicographic_sort(a_ad, b_ad); } int sort_by_length(const char* a, const char* b) { int lena = strlen(a), lenb = strlen(b); if (lena > lenb) return 1; if (lena < lenb) return -1; return lexicographic_sort(a, b); } void string_sort(char** arr,const int len,int (*cmp_func)(const char* a, const char* b)){ char* temp = NULL; int i = 0, j = 0; for(i = len - 1; i > 0; i--) { for(j = 0; j < i; j++) { if (cmp_func(arr[j], arr[j+1])>0) { temp = arr[j+1]; arr[j+1] = arr[j]; arr[j] = temp; } } } }
Seems like cookies are disabled on this browser, please enable them to open this website
Sorting Array of Strings
You are viewing a single comment's thread. Return to all comments →
Here is my take on this.