From 92f7e73b20f8fbd2d563e4194beb9e246e5ffe47 Mon Sep 17 00:00:00 2001 From: Kaehvaman Date: Sat, 30 Nov 2024 22:22:40 +0400 Subject: [PATCH] finish lab25 --- lab25/lab25/SortStringArray.c | 73 ++++++++++--------- lab25/lab25/SortStringArray.h | 4 +- lab25/lab25/main.c | 131 +++++++++++++++++++++++++++++----- lab25/lab25/sort test.xlsx | Bin 42811 -> 12717 bytes 4 files changed, 155 insertions(+), 53 deletions(-) diff --git a/lab25/lab25/SortStringArray.c b/lab25/lab25/SortStringArray.c index e3ec0f0..4e4d6a3 100644 --- a/lab25/lab25/SortStringArray.c +++ b/lab25/lab25/SortStringArray.c @@ -71,6 +71,13 @@ int ArraysAreEqual() { for (int i = 0; i < n; i++) { if (counts_in_words[i] != counts_in_a[i]) { + printf("-----------\n"); + for (int i = 0; i < MAX_WORDS; i++) { + if (1 || a[i][0] != '\0') { + printf("%d) %s\n", counts_in_a[i], a[i]); + } + } + printf("-----------\n"); return 0; } } @@ -160,7 +167,7 @@ void BubbleSortStrings() { void InsertionSortStrings() { int i = 1; - while (i < MAX_WORDS) { + while (i < n) { int j = i; while (j > 0 && strcmp(a[j - 1], a[j]) > 0) { swapWords(a[j], a[j - 1]); @@ -171,75 +178,75 @@ void InsertionSortStrings() { } // Merges two subarrays of arr[]. -// First subarray is arr[l..m] -// Second subarray is arr[m+1..r] -void merge(char arr[MAX_WORDS][MAX_LEN_WORD], int l, int m, int r) -{ +// First subarray is arr[left..mid] +// Second subarray is arr[mid+1..right] +void merge(char arr[MAX_WORDS][MAX_LEN_WORD], int left, int mid, int right) { int i, j, k; - int n1 = m - l + 1; - int n2 = r - m; + int n1 = mid - left + 1; + int n2 = right - mid; - // Create temp arrays - char L[MAX_WORDS][MAX_LEN_WORD], R[MAX_WORDS][MAX_LEN_WORD]; + // Create temporary arrays + static char leftArr[MAX_WORDS][MAX_LEN_WORD]; + static char rightArr[MAX_WORDS][MAX_LEN_WORD]; - // Copy data to temp arrays L[] and R[] + // Copy data to temporary arrays for (i = 0; i < n1; i++) { - strcpy(L[i], arr[l + i]); + strcpy(leftArr[i], arr[left + i]); } for (j = 0; j < n2; j++) { - strcpy(R[i], arr[m + 1 + j]); + strcpy(rightArr[j], arr[mid + 1 + j]); } - // Merge the temp arrays back into arr[l..r + // Merge the temporary arrays back into arr[left..right] i = 0; j = 0; - k = l; + k = left; while (i < n1 && j < n2) { - if (L[i] <= R[j]) { - strcpy(arr[k], L[i]); + if (strcmp(leftArr[i], rightArr[j]) <= 0) { + strcpy(arr[k], leftArr[i]); i++; } else { - strcpy(arr[k], R[j]); + strcpy(arr[k], rightArr[j]); j++; } k++; } - // Copy the remaining elements of L[], - // if there are any + // Copy the remaining elements of leftArr[], if any while (i < n1) { - strcpy(arr[k], L[i]); + strcpy(arr[k], leftArr[i]); i++; k++; } - // Copy the remaining elements of R[], - // if there are any + // Copy the remaining elements of rightArr[], if any while (j < n2) { - strcpy(arr[k], R[j]); + strcpy(arr[k], rightArr[j]); j++; k++; } } -// l is for left index and r is right index of the -// sub-array of arr to be sorted -void MergeSortStrings(char arr[MAX_WORDS][MAX_LEN_WORD], int l, int r){ - if (l < r) { - int m = l + (r - l) / 2; +// The subarray to be sorted is in the index range [left-right] +void MergeSortStrings(char arr[MAX_WORDS][MAX_LEN_WORD], int left, int right) { + if (left < right) { + + // Calculate the midpoint + int mid = left + (right - left) / 2; // Sort first and second halves - MergeSortStrings(arr, l, m); - MergeSortStrings(arr, m + 1, r); + MergeSortStrings(arr, left, mid); + MergeSortStrings(arr, mid + 1, right); - merge(arr, l, m, r); + // Merge the sorted halves + merge(arr, left, mid, right); } } void ShellSort() { - for (int s = MAX_WORDS / 2; s > 0; s /= 2) { - for (int i = s; i < MAX_WORDS; ++i) { + for (int s = n / 2; s > 0; s /= 2) { + for (int i = s; i < n; ++i) { for (int j = i - s; j >= 0 && strcmp(a[j], a[j + s]) > 0; j -= s) { char tmp[MAX_LEN_WORD]; strcpy(tmp, a[j]); diff --git a/lab25/lab25/SortStringArray.h b/lab25/lab25/SortStringArray.h index ad843d2..561598b 100644 --- a/lab25/lab25/SortStringArray.h +++ b/lab25/lab25/SortStringArray.h @@ -15,8 +15,6 @@ extern char words[MAX_WORDS][MAX_LEN_WORD]; // Массив для сортировки extern char a[MAX_WORDS][MAX_LEN_WORD]; - - int LoadWords(char* filename); void CopyWordsToA(); int ArraysAreEqual(); @@ -27,8 +25,8 @@ void SelectionSortStrings(); void QuickSortStrings(); void BubbleSortStrings(); void InsertionSortStrings(); -void MergeSortStrings(char arr[MAX_WORDS][MAX_LEN_WORD], int l, int r); void ShellSort(); +void MergeSortStrings(char arr[MAX_WORDS][MAX_LEN_WORD], int left, int right); int LinearSearchStrings(char target[], char source[MAX_WORDS][MAX_LEN_WORD]); int BinarySearchStrings(char target[], char source[MAX_WORDS][MAX_LEN_WORD]); diff --git a/lab25/lab25/main.c b/lab25/lab25/main.c index 950d003..d5a1f4b 100644 --- a/lab25/lab25/main.c +++ b/lab25/lab25/main.c @@ -4,29 +4,126 @@ #include #include "SortStringArray.h" -int main() { - LoadWords("TextMarkup/dict4.txt"); +void printStrings(char arr[MAX_WORDS][MAX_LEN_WORD]) { + printf("-----------\n"); + for (int i = 0; i < MAX_WORDS; i++) { + if (1 || arr[i][0] != '\0') { + printf("%s\n", arr[i]); + } + } + printf("-----------\n"); +} - int iter = 3; +int iter = 10; +char sort_funcs[][MAX_LEN_WORD] = { "SelectionSortStrings", "BubbleSortStrings", "InsertionSortStrings", "QuickSortStrings", "MergeSortStrings", "ShellSort" }; + +void check() { + if (!ArraysAreEqual()) { + printf("Arrays are not equal!!!\n"); + } + if (!isSortedStringArray(a)) { + printf("Array is not sorted!!!\n"); + } + printStrings(words); + printStrings(a); +} + +void selsort() { clock_t start = clock(); for (int i = 0; i < iter; i++) { CopyWordsToA(); - //memcpy(a, words, sizeof(words)); - - //SelectionSortStrings(); - //QuickSortStrings(); - MergeSortStrings(a, 0, MAX_WORDS-1); - - if (!ArraysAreEqual()) { - printf("Arrays are not equal!!!\n"); - } - if (!isSortedStringArray(a)) { - printf("Array is not sorted!!!\n"); - } + SelectionSortStrings(); + //check(); } + printf("%s\n", sort_funcs[0]); double runtime = (double)(clock() - start) / (double)CLOCKS_PER_SEC; - printf_s("full time = %.3lf seconds\n", runtime); - printf_s("single sort time = %.3lf seconds\n", runtime / iter); + printf_s("full time = %.10lf seconds\n", runtime); + printf_s("single sort time = %.10lf seconds\n", runtime / (double)iter); +} + +void bubsort() { + clock_t start = clock(); + for (int i = 0; i < iter; i++) { + CopyWordsToA(); + + BubbleSortStrings(); + + //check(); + } + printf("%s\n", sort_funcs[1]); + double runtime = (double)(clock() - start) / (double)CLOCKS_PER_SEC; + printf_s("full time = %.10lf seconds\n", runtime); + printf_s("single sort time = %.10lf seconds\n", runtime / (double)iter); +} + +void inssert() { + clock_t start = clock(); + for (int i = 0; i < iter; i++) { + CopyWordsToA(); + InsertionSortStrings(); + //check(); + } + printf("%s\n", sort_funcs[2]); + double runtime = (double)(clock() - start) / (double)CLOCKS_PER_SEC; + printf_s("full time = %.10lf seconds\n", runtime); + printf_s("single sort time = %.10lf seconds\n", runtime / (double)iter); +} + +void quicksort() { + clock_t start = clock(); + for (int i = 0; i < iter; i++) { + CopyWordsToA(); + QuickSortStrings(); + + //check(); + } + printf("%s\n", sort_funcs[3]); + double runtime = (double)(clock() - start) / (double)CLOCKS_PER_SEC; + printf_s("full time = %.10lf seconds\n", runtime); + printf_s("single sort time = %.10lf seconds\n", runtime / (double)iter); +} + +void mergesort() { + clock_t start = clock(); + for (int i = 0; i < iter; i++) { + CopyWordsToA(); + MergeSortStrings(a, 0, n - 1); + + //check(); + } + printf("%s\n", sort_funcs[4]); + double runtime = (double)(clock() - start) / (double)CLOCKS_PER_SEC; + printf_s("full time = %.10lf seconds\n", runtime); + printf_s("single sort time = %.10lf seconds\n", runtime / (double)iter); +} + +void shellsort() { + clock_t start = clock(); + for (int i = 0; i < iter; i++) { + CopyWordsToA(); + + ShellSort(); + //check(); + } + printf("%s\n", sort_funcs[5]); + double runtime = (double)(clock() - start) / (double)CLOCKS_PER_SEC; + printf_s("full time = %.10lf seconds\n", runtime); + printf_s("single sort time = %.10lf seconds\n", runtime / (double)iter); +} + +int main() { + char filename[] = "TextMarkup/dict4b.txt"; + LoadWords(filename); + printf("%s\n\n", filename); + + selsort(); + bubsort(); + inssert(); + quicksort(); + mergesort(); + shellsort(); + + printf("\a"); return 0; } diff --git a/lab25/lab25/sort test.xlsx b/lab25/lab25/sort test.xlsx index 96cf62e80952c8737df6814945be54d081a75a09..9eb8895222fa3c957a1b95def03f187c9bfa3b75 100644 GIT binary patch delta 6216 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 l+3Iy%?(XjH&fUD{oO{oA|NE_V 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