SHOW:
|
|
- or go back to the newest paste.
| 1 | #include <stdio.h> | |
| 2 | ||
| 3 | void print(int array[], int length) {
| |
| 4 | int i; | |
| 5 | printf("{ %d", array[0]);
| |
| 6 | for (i = 1; i < length; i++) | |
| 7 | printf(", %d", array[i]);
| |
| 8 | printf(" }\n");
| |
| 9 | } | |
| 10 | ||
| 11 | - | void scambiamin(int array[], int start, int length) {
|
| 11 | + | |
| 12 | - | int i, min = start; |
| 12 | + | int i, j, min, first; |
| 13 | - | for (i = start + 1; i < length; i++) |
| 13 | + | for (i = 0; i < length -1; i++) {
|
| 14 | - | if (array[i] < array[min]) min = i; |
| 14 | + | |
| 15 | // find the index of the minimum | |
| 16 | - | int primo = array[start]; |
| 16 | + | min = i; |
| 17 | - | array[start] = array[min]; |
| 17 | + | for (j = i +1; j < length; j++) |
| 18 | - | array[min] = primo; |
| 18 | + | if (array[j] < array[min]) min = j; |
| 19 | ||
| 20 | // put the minimum on top | |
| 21 | first = array[i]; | |
| 22 | array[i] = array[min]; | |
| 23 | - | for (i = 0; i < length -1; i++) |
| 23 | + | array[min] = first; |
| 24 | - | scambiamin(array, i, length); |
| 24 | + | } |
| 25 | } | |
| 26 | ||
| 27 | void insertionsort(int array[], int length) {
| |
| 28 | - | int test[] = {5, 7, 86, 2, -7, 6, 6};
|
| 28 | + | int i, j, curr; |
| 29 | - | print(test, 7); |
| 29 | + | for (i = 0; i < length; i++) {
|
| 30 | - | selectionsort(test, 7); |
| 30 | + | curr = array[i]; |
| 31 | - | print(test, 7); |
| 31 | + | for (j = i-1; j >= 0 && array[j] > curr; j--) |
| 32 | array[j+1] = array[j]; | |
| 33 | array[j+1] = curr; | |
| 34 | } | |
| 35 | } | |
| 36 | ||
| 37 | main() {
| |
| 38 | int a[] = {5, 7, 86, 2, -7, 6, 6};
| |
| 39 | printf("selection sort:\n");
| |
| 40 | print(a, 7); | |
| 41 | selectionsort(a, 7); | |
| 42 | print(a, 7); | |
| 43 | ||
| 44 | int b[] = {98, -72, 45, 3, 5, -1};
| |
| 45 | printf("insertion sort:\n");
| |
| 46 | print(b, 6); | |
| 47 | insertionsort(b, 6); | |
| 48 | print(b, 6); | |
| 49 | } |