- •Метод вставок
- •Метод выбора
- •Метод обмена
- •Метод обмена Антона
- •Метод подсчета
- •Метод подсчета
- •Поиск инверсными массивами
- •Метод золотого сечения
- •Метод фиббоначи
- •Поиск по двоичному дереву(флоат)
- •Сортировка с помощью дерева
- •Хеширование
- •Хеширование
- •Шифрование. Простая подстановка
- •Метод Шелла
- •Поиск по двоичному дереву
- •Метод дихотомии
- •Многоаспектныйпоиск с использ инверстных массивов (интервал)
- •Метод выбора
- •Гаммирование
Метод фиббоначи
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <math.h>
float function(float x) {
float exp=2.718281, y;
y=(sin(x*x/10)*pow(exp,x/10))/(x*x+1);
return y; }
void main() {
setlocale(LC_ALL,"Rus");
float x1, x2, a, b, P1=1.0, P2=1.0;
char name[30];
int i=0,n;
FILE *fp;
printf("Введите имя файла: ");
scanf("%s",&name);
printf("Введите интервал поиска минимума функции [a,b] (a > -10 , b < 10): ");
scanf("%f",&a);
scanf("%f",&b);
printf("Введите количество итераций n: ");
scanf("%f",&n);
fp=fopen(name,"a+");
fprintf(fp,"Начальные условия:\na= %f\nb= %f\ne= %f",a,b,e);
for(i=0;i<n;i++) {
x1=b-(P1/P2)*(b-a);
x2=a+(P1/P2)*(b-a);
if(function(x1)>function(x2))
a=x1;
else if(function(x1)<function(x2))
b=x2;
P2=P1+P2;
P1=P2-P1;
printf("\nШаг %d: \nТекущий интервал поиска:%f %f\nЗначения в этих точках: %f %f",i,a,b,function(a),function(b));
fprintf(fp,"\nШаг %d: \nТекущий интервал поиска:%f %f\nЗначения в этих точках: %f %f",i,a,b,function(a),function(b)); }
printf("\nl* %f%f\n",a,b);
if(function(a)<function(b))
printf("\nx= %f\ny= %f",a,function(a));
else
printf("\nx= %f\ny= %f",b,function(b));
fclose(fp);
getch(); }
Поиск по двоичному дереву(флоат)
#include<conio.h>
#include<stdio.h>
#include<alloc.h>
#include<stdlib.h>
struct tree{
float data;
int number;
struct tree*left;
struct tree*right;
}*root,*tmp;
struct tree* input_tree(int n,float a, struct tree *p);
float* poisk(struct tree*root);
main() {
char name[10];
FILE*f;
int i,k=0;
float a;
float*adres_el;
system("echo Введите имя входного файла ");
scanf("%s",name);
f=fopen(name,"rt");
if(f==NULL){
system("echo Ошибка");
system("pause");
return 0; }
root=NULL;
tmp=NULL;
for(i=1;!feof(f);i++){
fscanf(f,"%f",&a);
if(k==0){ root=input_tree(i,a,root);
tmp=root;
k=1; }
else
tmp=input_tree(i,a,tmp); }
fclose(f);
if(root==NULL) system("echo В файле 0 элементов");
else{
adres_el=poisk(root); }
k=1;
while(k==1){
system("echo Найти другой элемент?(1-да,0-нет): ");
scanf("%d",&k);
if(k==1)
adres_el=poisk(root); }
printf("\nFile: ");
f=fopen(name,"rt");
for(i=1;!feof(f);i++){
fscanf(f,"%f",&a);
printf("%.3f ",a); }
fclose(f);
getch();
return 0; }
struct tree* input_tree(int n,float a, struct tree *p) {
if(p==NULL){
p=(struct tree*)malloc(sizeof(struct tree));
p->data=a;
p->number=n;
p->left=NULL;
p->right=NULL; }
else if(a>p->data)
p->right=input_tree(n,a,p->right);
else
p->left=input_tree(n,a,p->left);
return p; }
float*poisk(struct tree*root) {
float a;
float*pa=NULL;
struct tree*p;
p=root;
system("echo Введите элемент, который хотите найти: ");
scanf("%f",&a);
while(a!=p->data){
if(a<p->data)
p=p->left;
else
p=p->right;
if(p==NULL)
break; }
if(p==NULL){
system("echo Извините, но такого элемента нет");
return NULL; }
else{
pa=&(p->data);
system("echo Адресс искомого элемента:");
printf("%p\n",pa);
system ("echo Номер элемента");
printf("%d\n",p->number);
return pa; }}