Реализации различных алгоритмов на Си / Метод обмена (int)1
.docТекст программы:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
main ()
{
int *x,i,a,n=0,k=0,j,tmp;
char s[100],b[100];
FILE *in;
FILE *out;
printf ("Enter a name of an entrance file\n");
scanf ("%s",s);
in=fopen (s,"r+t");
for (;;)
{
a=fscanf (in,"%d\n",&n);
if (a>0)
{
k++;
}
else
{
break;
}
}
printf ("Kolichestvo elementov %d\n",k);
getch ();
x=(int*)malloc(sizeof(int)*k);
fseek(in,0,SEEK_SET);
for(i=0;i<k;i++)
{
fscanf (in,"%d\n",&x[i]);
printf ("x[%d]=%d\n",i,x[i]);
}//for
for (j=k;j>0;j--)
{
for(i=0;i<k;i++)
{
if (x[i]>x[i+1])
{
tmp=x[i];
x[i]=x[i+1];
x[i+1]=tmp;
}
else break;
}
}
getch ();
printf ("Enter name file:\n");
scanf ("%s",b);
out=fopen (b,"w+t");
printf ("Otsortirovanye chisla:\n");
for(i=0;i<k;i++)
{
fprintf (out,"%d",x[i]);
printf ("%d\n",x[i]);
}
fclose (in);
fclose (out);
free (x);
getch();
}
Алгоритм:
Метод обмена.
Упорядоченная последовательность создается на том же участке памяти, что и исходная последовательность записей. Сортировка проводится путем сравнения соседних элементов, причем такие сравнения проводят N раз.
Дано: исходный неупорядоченный массив x[i],i=1..N;
tmp- промежуточная переменная.
Итог: массив x[i] упорядочен так, что значение элементов возрастают от 1-го к N-му элементу.
Написать программу, осуществляющую сортировку переменных из входного файла и записывающую результат сортировки в входной файл. Имена входного и выходного файла вводиться пользователем. На экране пользователю должны отображаться исходная и отсортированная последовательность. Формат файлов – текстовый. Количество записей неограниченно.
Метод обмена.
Целых чисел.