Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Различные методы сортировки и поиска си, программирование .docx
Скачиваний:
8
Добавлен:
04.01.2017
Размер:
49.33 Кб
Скачать

Метод вставок

#include<conio.h>

#include<stdio.h>

#include<stdlib.h>

void sort(int a[],int b[], int k);

int main(void){

int i,n=0,*m,*sm;

FILE *inp,*out;

if((inp=fopen("1.txt","r"))==NULL) {

system ("echo Нельзя открыть файл с элементами");

system ("pause");

return 0;}

while(feof(inp)==0) {

fscanf(inp,"%d",&i);

n++;}

fclose(inp);

m=new int[n];

sm=new int[n];

fopen("1.txt","r");

clrscr();

system ("echo Количество элементов");

printf("n=%d\n\r",n);

system ("echo Исходная последовательность");

for(i=0;i<n;i++){

fscanf(inp,"%d",&m[i]);

printf(" %d ",m[i]);}

sort(m,sm,n);

fclose(inp);

out=fopen("2.txt","w");

printf ("\n");

system("echo Отсортированная последовательность");

for(i=0;i<n;i++){

printf(" %d ",sm[i]);

fprintf(out," %d ",sm[i]); }

delete []m;

delete []sm;

fclose(out);

getch(); }

void sort (int a[],int b[],int k) {

int nov,j;

b[0]=a[0];

for (int p=1;p<k;p++) {

nov=a[p];

j=p-1;

if(b[j]<nov)b[j+1]=nov;

while(b[j]>nov&&j>=0) {

b[j+1]=b[j];

j--; }

b[j+1]=nov; } }

Метод выбора

#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; } }

Метод обмена

#include<stdio.h>

#include<conio.h>

#include<alloc.h>

int* bubble_sort(int*a,int n) {

int i,j,f=1;

int tmp;

for(i=0;i<n-1;i++){

for(j=n-1;j>i;j--){

f=0;

if(a[j]<a[j-1]){

tmp=a[j-1];

a[j-1]=a[j];

a[j]=tmp;

f=1; } }

if(f==0)break; }

return a;}

main()

fseek(f,0,SEEK_SET); a=(int*)malloc(n*sizeof(int));

for(i=0;i<n;i++){

fscanf(f,"%d",&a[i]); }

fclose(f);{

char name1[10],name2[10];

FILE*f;

int*a;

int i,n=0,tmp;

printf("name1: ");

scanf("%s",name1);

printf("name2: ");

scanf("%s",name2);

f=fopen(name1,"rt");

if(f==NULL){

printf("error");}

else{

while(!feof(f)){

fscanf(f,"%d",&tmp);

n++; }

printf("\n");

printf("%s: ",name1);

for(i=0;i<n;i++){

printf("%d ",a[i]); }

printf("\n"); bubble_sort(a,n); printf("%s: ",name2);

for(i=0;i<n;i++){

printf("%d ",a[i]); } f=fopen(name2,"wt"); for(i=0;i<n;i++){ fprintf(f,"%d ",a[i]); }

fclose(f); }

free(a);

getch(); }