qsort: generate random numbers in hand instead of reading them

This commit is contained in:
2025-10-27 00:29:30 +00:00
parent 03ba2096c1
commit 964e001dd5
2 changed files with 19 additions and 19 deletions

View File

@@ -15,6 +15,9 @@ list.out: impls/list.cpp
bsearch.out: impls/bsearch.cpp
$(CC) $(CFLAGS) $^ -o $@
qsort.out: impls/qsort.cpp
$(CC) $(CFLAGS) $^ -o $@
vec.out: impls/vec.c
$(CC) $(CFLAGS) $^ -o $@

View File

@@ -16,14 +16,14 @@
(A) ^= (B); \
} while (0)
#define TEST_SIZE 20
#define TEST_SIZE 10
void print_arr(int *arr, int size)
{
printf("{");
for (int i = 0; i < size - 1; ++i)
printf("%d, ", arr[i]);
printf("%d}", arr[size - 1]);
printf("{\n");
for (int i = 0; i < size; ++i)
printf(" %d,\n", arr[i]);
printf("}\n");
}
void quicksort(int *arr, int arr_size)
@@ -70,29 +70,26 @@ void quicksort(int *arr, int arr_size)
int main(void)
{
int arr[TEST_SIZE] = {0};
const int size = TEST_SIZE;
// randomly generate some numbers
// Generate a completely reverse ordered list
/*for (size_t i = 0; i < size; ++i) */
/* arr[TEST_SIZE - i - 1] = i;*/
int *arr = new int[TEST_SIZE];
// Generate a list where the first half is completely sorted and the
// other half is in reverse order.
for (size_t i = 0; i < size / 2; ++i)
arr[i] = i;
for (size_t i = size / 2; i < size; ++i)
arr[TEST_SIZE - (i - size / 2) - 1] = i;
for (size_t i = 0; i < TEST_SIZE; ++i)
{
arr[i] = rand() % (2L << 30);
}
printf("Before: ");
print_arr(arr, size);
print_arr(arr, TEST_SIZE);
printf("\n");
quicksort(arr, size);
quicksort(arr, TEST_SIZE);
printf("After: ");
print_arr(arr, size);
print_arr(arr, TEST_SIZE);
printf("\n");
delete[] arr;
return 0;
}