qsort: generate random numbers in hand instead of reading them
This commit is contained in:
3
Makefile
3
Makefile
@@ -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 $@
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user