ArrayBsearch

 

Всем привет

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

есть код:

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 он нашел, а дальше нет, в чем проблема?

 

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

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

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

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

 ArraySort(ticket,WHOLE_ARRAY,0,MODE_DESCEND);
   

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

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

 ArraySort(ticket,WHOLE_ARRAY,0,MODE_ASCEND);

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

 
Размер массива 15 элементов, заполнено 10, остальные 0. Т.е. массив не отсортированный.
 
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);
  }
//+------------------------------------------------------------------+

то же самое:

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

Это же бинарный поиск. Выполняется путем последоваельного деления массива пополам. Ну так он устроен.
 
Вообще бинарный поиск легко реализуется.
 
Ладно буду думать как организовать поиск по своему рецепту. Ибо бинарный не удовлетворяет требованию клиента .(oops)
Причина обращения: