diff --git a/Data/test/test b/Data/test/test new file mode 100644 index 0000000000000000000000000000000000000000..7d3f1aab4f2b2d88eb0bf103a36cb6cf206c208d --- /dev/null +++ b/Data/test/test @@ -0,0 +1,5 @@ +Impeartale,fooQu1yee5m,A+,TextFiction.com,2757 +Mhen1958,Ohfi0ieLei,O+,FindSpin.com,971 +Allonand,Shootuy0ie,O+,FlameBalls.com,2864 +Proffelf,Ko6JohzoC,O+,BidPursuit.com,307 +Suntly,paech2ooSei,O+,BaseRingTones.com,783 diff --git a/Main.c b/Main.c index 3ef2129a9ab3485a2aeb2de2f062bdef6dd80776..e2127c7ffdbb4107423cba722f7a249944694ac2 100644 --- a/Main.c +++ b/Main.c @@ -108,12 +108,12 @@ int main(int argc, char* argv[]) { for (index = 0; index < dir_file_counter; index++) { pthread_join(thread_array[index], (void**) &return_struct); data_array = return_struct->data_array; - for (struct_number = 0; struct_number < return_struct->array_count; struct_number++) { - printf("User: %s ", data_array[struct_number].user_name); - printf("Password: %s ", data_array[struct_number].password); - printf("Blood Type: %s ", data_array[struct_number].blood_type); - printf("Domain: %s ", data_array[struct_number].domain_name); - printf("DB Index: %d \n", data_array[struct_number].db_index); + for (struct_number = 0; struct_number <= return_struct->array_count; struct_number++) { + printf("User: %-16s ", data_array[struct_number].user_name); + printf("Password: %-17s ", data_array[struct_number].password); + printf("Blood Type: %-7s ", data_array[struct_number].blood_type); + printf("Domain: %-28s ", data_array[struct_number].domain_name); + printf("DB Index: %-15d \n", data_array[struct_number].db_index); free(data_array[struct_number].user_name); free(data_array[struct_number].password); free(data_array[struct_number].blood_type); @@ -121,6 +121,7 @@ int main(int argc, char* argv[]) { } free(data_array); free(return_struct); + printf("\n\n"); } free(absolute_path); @@ -337,7 +338,7 @@ void* thread_read_file(void* file_location) { // printf("DB Index: %d \n", data_array[struct_number].db_index); } - // data_array = merge_sort(data_array, 0, struct_number, struct_number); + data_array = merge_sort(data_array, 0, struct_number, (struct_number) + 1); return_struct = calloc(1, sizeof(thread_return_struct)); return_struct->array_count = struct_number; @@ -352,3 +353,133 @@ void* thread_read_file(void* file_location) { free(line_buffer); pthread_exit((void*) return_struct); } + + +data_struct* sort_data_array(data_struct* data_array, int array_size) { + data_struct* temp_array = calloc(array_size, sizeof(data_struct)); + + temp_array = merge_sort(data_array, 0, array_size); + + free(data_array); + return temp_array; +} + + +data_struct* merge_sort(data_struct* data_array, int low_int, int high_int, int array_size) { + int mid_int; + + // Base case. If equal or less, back out of recursion. + if (high_int <= low_int) { + return data_array; + } + + // Recursively divide and merge. + mid_int = (low_int + high_int) / 2; + data_array = merge_sort(data_array, low_int, mid_int, array_size); + data_array = merge_sort(data_array, (mid_int + 1), high_int, array_size); + return merge_array(data_array, low_int, mid_int, high_int, array_size); +} + + +data_struct* merge_array(data_struct* data_array, int low_int, int mid_int, int high_int, int array_size) { + int index; + int left_int = low_int; + int right_int = mid_int + 1; + data_struct* temp_array = calloc(array_size, sizeof(data_struct)); + + // printf("\n\n\nDuplicating data_array into temp_array... Low: %d Mid: %d High: %d ArraySize: %d\n", low_int, mid_int, high_int, array_size); + + // Duplicate array. + for (index = low_int; index < array_size; index++) { + temp_array[index] = data_array[index]; + + // printf("Temp UserN: %-20s ", temp_array[index].user_name); + // printf("Temp Index: %-20d ", temp_array[index].db_index); + // printf("Strd UserN: %-20s ", data_array[index].user_name); + // printf("Strd Index: %-20d\n", data_array[index].db_index); + } + // printf("\n"); + + // Loop until all index have been iterated. + for (index = low_int; index < (high_int + 1); index++) { + + // Check if left side is done but right is not. + if (left_int > mid_int) { + + // printf("Left(%d) not less than mid(%d), \n", low_int, mid_int); + // printf("Temp UserN: %-20s ", temp_array[right_int].user_name); + // printf("Temp Index: %-20d ", temp_array[right_int].db_index); + // printf("Strd UserN: %-20s ", data_array[index].user_name); + // printf("Strd Index: %-20d\n", data_array[index].db_index); + + data_array[index] = temp_array[right_int]; + + // printf("Swapped.\n"); + // printf("Temp UserN: %-20s ", temp_array[right_int].user_name); + // printf("Temp Index: %-20d ", temp_array[right_int].db_index); + // printf("Strd UserN: %-20s ", data_array[index].user_name); + // printf("Strd Index: %-20d\n", data_array[index].db_index); + + right_int++; + } else { + // Check if right side is done but left is not. + if (right_int > high_int) { + + // printf("Right(%d) not less than high(%d), \n", right_int, high_int); + // printf("Temp UserN: %-20s ", temp_array[left_int].user_name); + // printf("Temp Index: %-20d ", temp_array[left_int].db_index); + // printf("Strd UserN: %-20s ", data_array[index].user_name); + // printf("Strd Index: %-20d\n", data_array[index].db_index); + + data_array[index] = temp_array[left_int]; + + // printf("Swapped.\n"); + // printf("Temp UserN: %-20s ", temp_array[left_int].user_name); + // printf("Temp Index: %-20d ", temp_array[left_int].db_index); + // printf("Strd UserN: %-20s ", data_array[index].user_name); + // printf("Strd Index: %-20d\n", data_array[index].db_index); + + left_int++; + } else { + // Both sides not done. Compare both values. + if (temp_array[left_int].db_index < temp_array[right_int].db_index) { + + // printf("Left(%d) less than right(%d), \n", left_int, right_int); + // printf("Temp UserN: %-20s ", temp_array[left_int].user_name); + // printf("Temp Index: %-20d ", temp_array[left_int].db_index); + // printf("Strd UserN: %-20s ", data_array[index].user_name); + // printf("Strd Index: %-20d\n", data_array[index].db_index); + + data_array[index] = temp_array[left_int]; + + // printf("Swapped.\n"); + // printf("Temp UserN: %-20s ", temp_array[left_int].user_name); + // printf("Temp Index: %-20d ", temp_array[left_int].db_index); + // printf("Strd UserN: %-20s ", data_array[index].user_name); + // printf("Strd Index: %-20d\n", data_array[index].db_index); + + left_int++; + } else { + + // printf("Right(%d) less than left(%d), \n", right_int, left_int); + // printf("Temp UserN: %-20s ", temp_array[right_int].user_name); + // printf("Temp Index: %-20d ", temp_array[right_int].db_index); + // printf("Strd UserN: %-20s ", data_array[index].user_name); + // printf("Strd Index: %-20d\n", data_array[index].db_index); + + data_array[index] = temp_array[right_int]; + + // printf("Swapped.\n"); + // printf("Temp UserN: %-20s ", temp_array[right_int].user_name); + // printf("Temp Index: %-20d ", temp_array[right_int].db_index); + // printf("Strd UserN: %-20s ", data_array[index].user_name); + // printf("Strd Index: %-20d\n", data_array[index].db_index); + + right_int++; + } + } + } + } + free(temp_array); + return data_array; +}