Реализации различных алгоритмов на Си / Метод выбора (int)
.doc
Задание кафедры
Написать программу, осуществляющую сортировку чисел из входного файла и запись результата сортировки в выходной файл. Имена входного и выходного файлов вводятся пользователем. На экране должна отображаться входная и выходная последовательность. Формат файлов текстовый. Количество записей не ограничено.
Вариант 1Int
Алгоритм сортировки методом выбора
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
void sort(int* x, int q)
{
int i,j;
int min;
int temp;
for (i=0;i<q-1;i++)
{
min=i;
for (j=i+1;j<q;j++)
{
if (x[min]>x[j])
{
min=j;
}
}
temp=x[i];
x[i]=x[min];
x[min]=temp;
}
}
int main (void)
{
char name_in[50],name_out[50];
int i=0,j;
int temp=0;
int* mass=NULL;
FILE *in, *out;
printf("Input in filename\n");
scanf("%s",&name_in);
printf("Input out filename\n");
scanf("%s",&name_out);
in=fopen(name_in,"r");
if(in==NULL)
{
printf("Error. File %s is not exist.\n",name_in);
system("pause");
return 1;
}
else
{
printf("Unsorted:\n");
while(!feof(in))
{
fscanf(in,"%d",&temp);
printf("%d ",temp);
i++;
}
mass=(int*)malloc(i*sizeof(int));
fseek(in,0,SEEK_SET);
for(j=0;j<i;j++)
{
fscanf(in,"%d",&temp);
mass[j]=temp;
}
fclose(in);
sort(mass,i);
out=fopen(name_out,"w");
printf("\nSorted:\n");
for(j=0;j<i;j++)
{
temp=mass[j];
printf("%d ",temp);
fprintf(out,"%d ",temp);
}
fclose(out);
free(mass);
printf("\n");
system("pause");
return 0;
}
}
Содержимое файла in.txt:
4 54 -68 5868 0 10
Содержимое файла out.txt:
-68 0 4 10 54 5868