Сортировки в файле (метод сортировки выбирается пользователем) - C (СИ)
Формулировка задачи:
помогите пожалуйста соединить 3 сортировки , что бы они проходили в файле. и перед началом можно было выбрать каким способом будет сортировка. например 1- первый способ, 2-второй способ, 3- третий способ.
void selectSort(int* arr, int size) { int tmp, i, j, pos; for(i = 0; i < size; ++i) // i - номер текущего шага { pos = i; tmp = arr[i]; for(j = i + 1; j < size; ++j) // цикл выбора наименьшего элемента { if (arr[j] < tmp) { pos = j; tmp = arr[j]; } } arr[pos] = arr[i]; arr[i] = tmp; // меняем местами наименьший с a[i] } }void selectSort(int* arr, int size) { int tmp, i, j, pos; for(i = 0; i < size; ++i) // i - номер текущего шага { pos = i; tmp = arr[i]; for(j = i + 1; j < size; ++j) // цикл выбора наименьшего элемента { if (arr[j] < tmp) { pos = j; tmp = arr[j]; } } arr[pos] = arr[i]; arr[i] = tmp; // меняем местами наименьший с a[i] } } ---сортировка выбором void bubbleSort(int* arr, int size) { int tmp, i, j; for(i = 0; i < size - 1; ++i) // i - номер прохода { for(j = 0; j < size - 1; ++j) // внутренний цикл прохода { if (arr[j + 1] < arr[j]) { tmp = arr[j + 1]; arr[j + 1] = arr[j]; arr[j] = tmp; } } } }----сортировка пузырьком void insertSort(int* a, int size) { int i, j, tmp; for (i = 1; i < size; ++i) // цикл проходов, i - номер прохода { tmp = a[i]; for (j = i - 1; j >= 0 && a[j] > tmp; --j) // поиск места элемента в готовой последовательности a[j + 1] = a[j]; // сдвигаем элемент направо, пока не дошли a[j + 1] = tmp; // место найдено, вставить элемент } }----сортировка вставками
Решение задачи: «Сортировки в файле (метод сортировки выбирается пользователем)»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <time.h> //enum sorts {SELECTION_SORT // , BUBBLE_SORT // , INSERTION_SORT}; void print_arr(int *arr, size_t size) { for (size_t i = 0; i<size; i++) printf("%d ", arr[i]); printf("\n"); } int main(int argc, char **argv) { int *arr = NULL; int sortNo; FILE *file; if (argc < 3) { printf("Error argument file name\n"); return -1; } file = fopen(argv[1], "r"); if (file == 0) { printf("Error open file: %s\n", argv[1]); return -1; } int size = 0, val = 0; while (fscanf(file, "%d", &val)==1) { arr = realloc((!size) ? NULL : arr, sizeof(int) *(size + 1)); if (arr == NULL) { printf("Error realloc\n"); return -1; } arr[size++] = val; } fclose(file); print_arr(arr, size); printf("Input number[0-2]: "); scanf("%d", &sortNo); switch(sortNo) { case 0: //selection_sort(arr, size); // сюда вашу функцию сортировки break; case 1: //bubble_sort(arr, size); // и сюда break; case 2: //insertion_sort(arr, size); // и сюда break; default: puts("Error!\n"); break; } file = fopen(argv[2], "w"); if (file == 0) { printf("Error open file: %s\n", argv[2]); return -1; } for (int i = 0; i<size; i++) fprintf(file, "%d ", arr[i]); fclose(file); free(arr); return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д