From 7eef6c36b827e3c9416c20f881f9423242649d25 Mon Sep 17 00:00:00 2001 From: Ilya Date: Wed, 1 Nov 2023 16:21:40 +0300 Subject: [PATCH 1/3] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=203-1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Task 3-1/3-1.c | 124 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 Task 3-1/3-1.c diff --git a/Task 3-1/3-1.c b/Task 3-1/3-1.c new file mode 100644 index 0000000..7a5535a --- /dev/null +++ b/Task 3-1/3-1.c @@ -0,0 +1,124 @@ +#include +#include +#include + +void swapp(int* a, int* b) +{ + int temp = *a; + *a = *b; + *b = temp; +} + +// Реализация сортировки вставками +void insertSort(int array[], int start, int end) +{ + if (start >= end) + { + return; + } + + int element, location; + + for (int i = start; i < end; i++) + { + element = array[i]; + location = i - 1; + + while (location >= 0 && array[location] > element) + { + array[location + 1] = array[location]; + location = location - 1; + } + + array[location + 1] = element; + } +} + +// Функция, разделяющая массив относительно точки опоры +int partition(int array[], int start, int end) +{ + int pivot = array[end - 1]; + int index = start; + + for (int i = start; i < end; i++) + { + if (array[i] <= pivot) + { + swapp(&array[i], &array[index]); + index++; + } + } + + swapp (&array[index], &array[end - 1]); + return index; +} + +// Сама функция qSort +void quickSort(int array[], int start, int end) +{ + if (start >= end) + { + return; + } + + if (end - start < 10) + { + insertSort(array, start, end); + } + else + { + int pivot = partition(array, start, end); + quickSort(array, start, pivot - 1); + quickSort(array, pivot + 1, end); + } +} + + + +bool arraysEqual(int array1[], int array2[], int len) +{ + bool result = true; + + for (int i = 0; i < len; i++) + { + if (! (array1[i] == array2 [i])) + { + result = false; + } + } + + return result; +} + +bool test(int array[], int arraySorted[], int arrayLength) +{ + quickSort(array, 0, arrayLength); + if (arraysEqual(array, arraySorted, arrayLength)) + { + return true; + } + return false; +} + +int main() +{ + int array1[] = {4, 1, 8, 5}; + int array1Sorted[] = {1, 4, 5, 8}; + int array1Length = 4; + + int array2[] = {0}; + int array2Sorted[] = {0}; + int array2Length = 1; + + int array3[] = {34, 2452, 143, 34, 134, 566, 3, 100, 1234, 1234, 34, 565, 544}; + int array3Sorted[] = {3, 34, 34, 34, 100, 134, 143, 544, 565, 566, 1234, 1234, 2452}; + int array3Length = 13; + + if (test(array1, array1Sorted, array1Length) && test(array2, array2Sorted, array2Length) && test(array3, array3Sorted, array3Length)) + { + printf("Все тесты пройдены\n"); + return 0; + } + printf("Тесты не пройдены\n"); + return -1; +} \ No newline at end of file From 5d97842e97e508cd00b1988f9428f24bf644ed47 Mon Sep 17 00:00:00 2001 From: Ilya Date: Wed, 1 Nov 2023 20:47:05 +0300 Subject: [PATCH 2/3] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=20=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=BC=D0=B5=D1=87=D0=B0=D0=BD=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Task 3-1/3-1.c | 36 +++++++++++++++++------------------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/Task 3-1/3-1.c b/Task 3-1/3-1.c index 7a5535a..fd8e5de 100644 --- a/Task 3-1/3-1.c +++ b/Task 3-1/3-1.c @@ -2,7 +2,7 @@ #include #include -void swapp(int* a, int* b) +void swap(int* a, int* b) { int temp = *a; *a = *b; @@ -16,13 +16,11 @@ void insertSort(int array[], int start, int end) { return; } - - int element, location; for (int i = start; i < end; i++) { - element = array[i]; - location = i - 1; + int element = array[i]; + int location = i - 1; while (location >= 0 && array[location] > element) { @@ -44,12 +42,12 @@ int partition(int array[], int start, int end) { if (array[i] <= pivot) { - swapp(&array[i], &array[index]); - index++; + swap(&array[i], &array[index]); + ++index; } } - swapp (&array[index], &array[end - 1]); + swap(&array[index], &array[end - 1]); return index; } @@ -73,13 +71,11 @@ void quickSort(int array[], int start, int end) } } - - -bool arraysEqual(int array1[], int array2[], int len) +bool arraysEqual(int array1[], int array2[], int length) { bool result = true; - for (int i = 0; i < len; i++) + for (int i = 0; i < length; i++) { if (! (array1[i] == array2 [i])) { @@ -93,14 +89,10 @@ bool arraysEqual(int array1[], int array2[], int len) bool test(int array[], int arraySorted[], int arrayLength) { quickSort(array, 0, arrayLength); - if (arraysEqual(array, arraySorted, arrayLength)) - { - return true; - } - return false; + return arraysEqual(array, arraySorted, arrayLength); } -int main() +bool tests() { int array1[] = {4, 1, 8, 5}; int array1Sorted[] = {1, 4, 5, 8}; @@ -114,7 +106,13 @@ int main() int array3Sorted[] = {3, 34, 34, 34, 100, 134, 143, 544, 565, 566, 1234, 1234, 2452}; int array3Length = 13; - if (test(array1, array1Sorted, array1Length) && test(array2, array2Sorted, array2Length) && test(array3, array3Sorted, array3Length)) + return test(array1, array1Sorted, array1Length) && test(array2, array2Sorted, array2Length) \ + && test(array3, array3Sorted, array3Length); +} + +int main() +{ + if (tests()) { printf("Все тесты пройдены\n"); return 0; From 90ef550be98c62107820dac671f1f7afaa3835e3 Mon Sep 17 00:00:00 2001 From: Gadjib Date: Fri, 3 Nov 2023 15:33:16 +0300 Subject: [PATCH 3/3] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D1=81=D0=BA=D1=80=D0=B8=D0=BF=D1=82=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D1=81=D0=B1=D0=BE=D1=80=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Task 3-1/start.sh | 1 + 1 file changed, 1 insertion(+) create mode 100755 Task 3-1/start.sh diff --git a/Task 3-1/start.sh b/Task 3-1/start.sh new file mode 100755 index 0000000..f3acad8 --- /dev/null +++ b/Task 3-1/start.sh @@ -0,0 +1 @@ +gcc -Wall -Wextra 3-1.c