/* selection sort of an array */ #include #define NSIZE 20 int get_min_range(int list[], int first, int last); void select_sort(int list[], int n); int main() { int array[NSIZE], size, num, i; FILE *fp; fp = fopen("data.txt", "r"); size = 0; while(fscanf(fp, "%d", &num) == 1) array[size++] = num; printf("array before sorting = "); for (i = 0; i < size; ++i) printf(" %d",array[i]); select_sort(array, size); // selection sort printf("\narray after sorting = "); for (i = 0; i < size; ++i) printf(" %d",array[i]); fclose(fp); return 0; } /* sort array list[] by selection sort */ void select_sort(int list[], int n) { int cur_index, temp, index_of_min; for (cur_index = 0; cur_index < n-1; ++cur_index) { /* Find position of smallest element in unsorted subarray */ index_of_min = get_min_range(list, cur_index, n-1); /* Exchange elements at fill and index_of_min */ if (cur_index != index_of_min) { temp = list[index_of_min]; list[index_of_min] = list[cur_index]; list[cur_index] = temp; } } } /* Find the position of the smallest element in the subarray */ int get_min_range(int list[], int first, int last) { int i, index_small, temp; temp = list[first]; index_small = first; for (i = first; i <= last; ++i) if (list[i] < temp){ temp = list[i]; index_small = i; } return (index_small); }