|
3 | 3 | #include <time.h>
|
4 | 4 |
|
5 | 5 | #define ELEMENT_NR 20
|
6 |
| -#define ARRAY_LEN(x) (sizeof(x)/sizeof((x)[0])) |
| 6 | +#define ARRAY_LEN(x) (sizeof(x) / sizeof((x)[0])) |
7 | 7 | const char *notation = "Shell Sort Big O Notation:\
|
8 | 8 | \n--> Best Case: O(n log(n)) \
|
9 | 9 | \n--> Average Case: depends on gap sequence \
|
10 | 10 | \n--> Worst Case: O(n)";
|
11 | 11 |
|
12 | 12 | void show_data(int arr[], int len)
|
13 | 13 | {
|
14 |
| - int i; |
| 14 | + int i; |
15 | 15 |
|
16 |
| - for (i = 0; i < len; i++) |
17 |
| - printf("%3d ", arr[i]); |
18 |
| - printf("\n"); |
| 16 | + for (i = 0; i < len; i++) |
| 17 | + printf("%3d ", arr[i]); |
| 18 | + printf("\n"); |
19 | 19 | }
|
20 | 20 |
|
21 | 21 | void swap(int *a, int *b)
|
22 | 22 | {
|
23 |
| - int tmp; |
| 23 | + int tmp; |
24 | 24 |
|
25 |
| - tmp = *a; |
26 |
| - *a = *b; |
27 |
| - *b = tmp; |
| 25 | + tmp = *a; |
| 26 | + *a = *b; |
| 27 | + *b = tmp; |
28 | 28 | }
|
29 | 29 |
|
30 | 30 | void shellSort(int array[], int len)
|
31 | 31 | {
|
32 |
| - int i, j, gap; |
| 32 | + int i, j, gap; |
33 | 33 |
|
34 |
| - for (gap = len / 2; gap > 0; gap = gap / 2) |
35 |
| - for (i = gap; i < len; i++) |
36 |
| - for (j = i - gap; j >= 0 && array[j] > array[j + gap]; j = j - gap) |
37 |
| - swap(&array[j], &array[j + gap]); |
| 34 | + for (gap = len / 2; gap > 0; gap = gap / 2) |
| 35 | + for (i = gap; i < len; i++) |
| 36 | + for (j = i - gap; j >= 0 && array[j] > array[j + gap]; j = j - gap) |
| 37 | + swap(&array[j], &array[j + gap]); |
38 | 38 | }
|
39 | 39 |
|
40 | 40 | int main(int argc, char *argv[])
|
41 | 41 | {
|
42 |
| - int i; |
43 |
| - int array[ELEMENT_NR]; |
44 |
| - int range = 500; |
45 |
| - int size; |
46 |
| - clock_t start, end; |
47 |
| - double time_spent; |
| 42 | + int i; |
| 43 | + int array[ELEMENT_NR]; |
| 44 | + int range = 500; |
| 45 | + int size; |
| 46 | + clock_t start, end; |
| 47 | + double time_spent; |
48 | 48 |
|
49 |
| - srand(time(NULL)); |
50 |
| - for (i= 0; i < ELEMENT_NR; i++) |
51 |
| - array[i] = rand() % range + 1; |
| 49 | + srand(time(NULL)); |
| 50 | + for (i = 0; i < ELEMENT_NR; i++) |
| 51 | + array[i] = rand() % range + 1; |
52 | 52 |
|
53 |
| - size = ARRAY_LEN(array); |
| 53 | + size = ARRAY_LEN(array); |
54 | 54 |
|
55 |
| - show_data(array, size); |
56 |
| - start = clock(); |
57 |
| - shellSort(array, size); |
58 |
| - end = clock(); |
59 |
| - time_spent = (double)(end - start) / CLOCKS_PER_SEC; |
| 55 | + show_data(array, size); |
| 56 | + start = clock(); |
| 57 | + shellSort(array, size); |
| 58 | + end = clock(); |
| 59 | + time_spent = (double)(end - start) / CLOCKS_PER_SEC; |
60 | 60 |
|
61 |
| - printf("Data Sorted\n"); |
62 |
| - show_data(array, size); |
| 61 | + printf("Data Sorted\n"); |
| 62 | + show_data(array, size); |
63 | 63 |
|
64 |
| - printf("%s\n", notation); |
65 |
| - printf("Time spent sorting: %f\n", time_spent); |
| 64 | + printf("%s\n", notation); |
| 65 | + printf("Time spent sorting: %f\n", time_spent); |
66 | 66 |
|
67 |
| - return 0; |
| 67 | + return 0; |
68 | 68 | }
|
0 commit comments