Скачать MetaTrader 5

ArrayBsearch

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Vladislav Andruschenko
110477
Vladislav Andruschenko  

Всем привет

не могу понять где ошибка.

есть код:

int ticket[15];
int start()
  {
//----
   
 //  ArrayResize(ticket,15);
 //  ArrayInitialize(ticket,-1);
   ticket[0]=1;
   ticket[1]=2;
   ticket[2]=3;
   ticket[3]=4;
   ticket[4]=5;
   ticket[5]=6;
   ticket[6]=7;
   ticket[7]=8;
   ticket[8]=9;
   ticket[9]=10;
   
   //ArraySort(ticket,WHOLE_ARRAY,0,MODE_DESCEND);
   //ArrayResize(ticket,ArrayBsearch(ticket,-1));
   
Comment(
ArrayBsearch(ticket,1)+"=="+ticket[ArrayBsearch(ticket,1)]+"==="+1+"\n"+
ArrayBsearch(ticket,NormalizeDouble(2,0))+"=="+ticket[ArrayBsearch(ticket,NormalizeDouble(2,0))]+"==="+2+"\n"+
ArrayBsearch(ticket,NormalizeDouble(3,0))+"=="+ticket[ArrayBsearch(ticket,NormalizeDouble(3,0))]+"==="+3+"\n"+
ArrayBsearch(ticket,NormalizeDouble(4,0))+"=="+ticket[ArrayBsearch(ticket,NormalizeDouble(4,0))]+"==="+4+"\n"+
ArrayBsearch(ticket,NormalizeDouble(5,0))+"=="+ticket[ArrayBsearch(ticket,NormalizeDouble(5,0))]+"==="+5+"\n"+
ArrayBsearch(ticket,NormalizeDouble(6,0))+"=="+ticket[ArrayBsearch(ticket,NormalizeDouble(6,0))]+"==="+6+"\n"+
ArrayBsearch(ticket,NormalizeDouble(7,0))+"=="+ticket[ArrayBsearch(ticket,NormalizeDouble(7,0))]+"==="+7+"\n"+
ArrayBsearch(ticket,NormalizeDouble(8,0))+"=="+ticket[ArrayBsearch(ticket,NormalizeDouble(8,0))]+"==="+8+"\n"+
ArrayBsearch(ticket,NormalizeDouble(9,0))+"=="+ticket[ArrayBsearch(ticket,NormalizeDouble(9,0))]+"==="+9+"\n"+
ArrayBsearch(ticket,NormalizeDouble(10,0))+"=="+ticket[ArrayBsearch(ticket,NormalizeDouble(10,0))]+"==="+10

);
//----
   return(0);
  }

он выводит на график:

Т.е. 1 он нашел, а дальше нет, в чем проблема?

Vladislav Andruschenko
110477
Vladislav Andruschenko  

если раскоментировал

то получилось:

ArraySort(ticket,WHOLE_ARRAY,0,MODE_DESCEND);
Vladislav Andruschenko
110477
Vladislav Andruschenko  
перепробовал все. В чем может быть трабл?
Vladislav Andruschenko
110477
Vladislav Andruschenko  

Если поставить так:

 ArraySort(ticket,WHOLE_ARRAY,0,MODE_DESCEND);
   

то показывается ерунда:

Если поставить так:

 ArraySort(ticket,WHOLE_ARRAY,0,MODE_ASCEND);

то более и менее получается то что мне нужно.

Dmitry Fedoseev
47365
Dmitry Fedoseev  
Размер массива 15 элементов, заполнено 10, остальные 0. Т.е. массив не отсортированный.
Vladislav Andruschenko
110477
Vladislav Andruschenko  
int ticket[10];
int start()
  {
//----
   
   ArrayResize(ticket,10);
   ArrayInitialize(ticket,-1);
   ticket[0]=NormalizeDouble(1,0);
   ticket[1]=NormalizeDouble(2,0);
   ticket[2]=NormalizeDouble(3,0);
   ticket[3]=NormalizeDouble(4,0);
   ticket[4]=NormalizeDouble(5,0);
   ticket[5]=NormalizeDouble(6,0);
   ticket[6]=NormalizeDouble(7,0);
   ticket[7]=NormalizeDouble(8,0);
   ticket[8]=NormalizeDouble(9,0);
   ticket[9]=NormalizeDouble(10,0);
   
   ArraySort(ticket,WHOLE_ARRAY,0,MODE_DESCEND);
   
Comment(
ArrayBsearch(ticket,1)+"=="+ticket[ArrayBsearch(ticket,1)]+"==="+1+"\n"+
ArrayBsearch(ticket,NormalizeDouble(2,0))+"=="+ticket[ArrayBsearch(ticket,NormalizeDouble(2,0))]+"==="+2+"\n"+
ArrayBsearch(ticket,NormalizeDouble(3,0))+"=="+ticket[ArrayBsearch(ticket,NormalizeDouble(3,0))]+"==="+3+"\n"+
ArrayBsearch(ticket,NormalizeDouble(4,0))+"=="+ticket[ArrayBsearch(ticket,NormalizeDouble(4,0))]+"==="+4+"\n"+
ArrayBsearch(ticket,NormalizeDouble(5,0))+"=="+ticket[ArrayBsearch(ticket,NormalizeDouble(5,0))]+"==="+5+"\n"+
ArrayBsearch(ticket,NormalizeDouble(6,0))+"=="+ticket[ArrayBsearch(ticket,NormalizeDouble(6,0))]+"==="+6+"\n"+
ArrayBsearch(ticket,NormalizeDouble(7,0))+"=="+ticket[ArrayBsearch(ticket,NormalizeDouble(7,0))]+"==="+7+"\n"+
ArrayBsearch(ticket,NormalizeDouble(8,0))+"=="+ticket[ArrayBsearch(ticket,NormalizeDouble(8,0))]+"==="+8+"\n"+
ArrayBsearch(ticket,NormalizeDouble(9,0))+"=="+ticket[ArrayBsearch(ticket,NormalizeDouble(9,0))]+"==="+9+"\n"+
ArrayBsearch(ticket,NormalizeDouble(10,0))+"=="+ticket[ArrayBsearch(ticket,NormalizeDouble(10,0))]+"==="+10
+"\n ticket="+ticket[0]+" = "+ticket[1]+" = "+ticket[2]+" = "+ticket[3]+" = "+" = "+ticket[4]+" = "+" = "+ticket[5]+" = "+" = "+ticket[6]+" = "+" = "+ticket[7]+" = "+" = "+ticket[8]+" = "+" = "+ticket[9]+" = "

);
//----
   return(0);
  }
//+------------------------------------------------------------------+

то же самое:

Dmitry Fedoseev
47365
Dmitry Fedoseev  
Массив должен быть отсортирован по возрастанию.
Vladislav Andruschenko
110477
Vladislav Andruschenko  
вот в том то и прикол, а я не понимаю почему только по возрастанию? если есть возможность по убыванию отсортировать?
Dmitry Fedoseev
47365
Dmitry Fedoseev  
Vladon:
вот в том то и прикол, а я не понимаю почему только по возрастанию? если есть возможность по убыванию отсортировать?

Это же бинарный поиск. Выполняется путем последоваельного деления массива пополам. Ну так он устроен.
Комбинатор
16636
Комбинатор  
Вообще бинарный поиск легко реализуется.
Vladislav Andruschenko
110477
Vladislav Andruschenko  
Ладно буду думать как организовать поиск по своему рецепту. Ибо бинарный не удовлетворяет требованию клиента .(oops)
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий