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
|
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 $@
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user