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 bsearch.out: impls/bsearch.cpp
$(CC) $(CFLAGS) $^ -o $@ $(CC) $(CFLAGS) $^ -o $@
qsort.out: impls/qsort.cpp
$(CC) $(CFLAGS) $^ -o $@
vec.out: impls/vec.c vec.out: impls/vec.c
$(CC) $(CFLAGS) $^ -o $@ $(CC) $(CFLAGS) $^ -o $@

View File

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