Приложение 2. Пример, реализующий алгоритмы сортировки и запись результатов в файл
Пример, реализующий алгоритмы сортировки и запись результатов в файл. #include < stdio.h> #include < iostream.h> void swap(int *x, int *y); void bubble_sort(int *a1, int count); //функция пузырьковой сортировки void min_sort(int *a1, int count); //функция сортировки методом выбора void insert_sort(int *a1, int count); // функция сортировки методом вставки void shell_sort(int *x, int count); //функция сортировки методом Шелла void hoare_sort(int *x, int, int); void vvod(int *a1, int count); //функция ввода значений массива void out(int *a1, int count); //функция вывода значений массива void file_write(int *a1, int count);
FILE *file; int i, j; int step=0;
void main(void) { int *a, n; file=fopen(" result_sort.txt", " w"); puts(" Enter length of array: "); scanf(" %d", & n); a=new int[n]; puts(" Enter elements of array"); vvod(a, n); file_write(a, n); step++; puts(" Sorted array by method \\Bubble Sort\\: "); bubble_sort(a, n); out(a, n); file_write(a, n); step++; puts(" Sorted array by method \\Min element\\: "); min_sort(a, n); out(a, n); file_write(a, n); step++; puts(" Sorted array by method \\Insert Sort\\: "); out(a, n); file_write(a, n); step++; puts(" Sorted array by method \\Shell Sort\\: "); shell_sort(a, n); out(a, n); file_write(a, n); step++; puts(" Sorted array by method \\Hoare Sort\\: "); hoare_sort(a, 0, n-1); out(a, n); file_write(a, n); fclose(file); delete []a; } void swap(int *x, int *y) { int t; t=*x; *x=*y; *y=t; }
void vvod(int *a1, int count) { for(i=0; i< count; i++) cin> > *(a1+i); } void out(int *a1, int count) { for(i=0; i< count; i++) cout< < *(a1+i)< < " "; cout< < endl; } void bubble_sort(int *a1, int count) { for (i=0; i< count; i++) for (j=count-1; j> i; j--) if (*(a1+j-1) > *(a1+j)) swap((a1+j-1), (a1+j)); /*поменять их местами */ } void min_sort(int *a1, int count) { int k; for (i=0; i< count-1; i++) { for (k=i, j=i+1; j< count; j++) // находим в цикле if (*(a1+j)< *(a1+k)) { // минимальный элемент k=j; // запоминаем его номер в k swap((a1+k), (a1+j)); } } // меняем местами минимальный и // элем, с которого начинался цикл } void insert_sort(int *a1, int count) { for (i=1; i< =count-1; i++) { j=i; while (*(a1+j)< *(a1+j-1) & & j> =1) { swap((a1+j), (a1+j-1)); j--; } }} void shell_sort(int *x, int count) { int i, j; //две переменные цикла int gap; //шаг сортировки int sorted; //флаг окончания этапа сортировки for(gap=count/2; gap> 0; gap/=2)//начало сортировки do { sorted = 0; for(i=0, j=gap; j< count; i++, j++) if(*(x+i)> *(x+j)) { swap((x+i), (x+j)); sorted = 1; } }while(sorted); } void hoare_sort(int *x, int l, int r) { int sr=*(x+(l+r)/2); i=l; j=r; do { while(*(x+i)< sr) i++; while(*(x+j)> sr) j--; if(i< =j) { swap((x+i), (x+j)); i++; j--; } }while(i< =j); if(i< r) hoare_sort(x, i, r); if(j> l) hoare_sort(x, l, j); } void file_write(int *a1, int count) { if(step==0) fprintf(file, " \t\tRESULTS OF SORTS\n"); if(step==1) fprintf(file, " 1.Bubble Sort\n"); if(step==2) fprintf(file, " \n2.Min Sort\n"); if(step==3) fprintf(file, " \n3.Insert Sort\n"); if(step==4) fprintf(file, " \n4.Shell Sort\n"); if(step==5) fprintf(file, " \n5.Hoare Sort\n"); if(step! =0) for(i=0; i< count; i++) fprintf(file, " %d ", *(a1+i)); }
|