Пример #1
0
int block_search (RecordList l, int key)
{
    BlockList (BLOCK_SIZE, l.length, 1); 

    int     i; 
    for (i = 0; i < block_list1.length; i++) {
        block_list1.r[i].addr = i * block_list1.block_length;
        block_list1.r[i].max_key = l.r[i*5].key;
    }

    for (i = 0; i < l.length; i++) 
        if (block_list1.r[i/5].max_key < l.r[i].key)
            block_list1.r[i/5].max_key = l.r[i].key;
    
    for (i = 0; i < block_list1.length; i++) {
        if (key < block_list1.r[i].max_key) {
            l.list_s = block_list1.r[i].addr;
            l.list_e = (i == block_list1.length-1 ? 
                        l.length : block_list1.r[i+1].addr-1);
            return seq_search (l, key);
        }
    }

    return l.length;
}
Пример #2
0
//=============================================================================
// Get iterator to first cluster on a given plane inside a given time window
//=============================================================================
TbClusterFinder::Iterator TbClusterFinder::getIterator(
    const double& t, const unsigned int& plane) {

  if (m_searchAlgo == SearchMethod::Seq) {
    return seq_search(t, plane);
  } else if (m_searchAlgo == SearchMethod::AdapSeq) {
    return adap_seq_search(t, plane);
  }
  warning() << "Unknown search algorithm" << endmsg;
  return adap_seq_search(t, plane);
}
Пример #3
0
int
main (void)
{
  int array[MAX_INPUT];
  int n, i;

  for (n = 0; n < MAX_INPUT; n++)
    if (scanf ("%d", &array[n]) != 1)
      break;

  for (i = 0; i < n; i++)
    {
      int result = seq_search (array, n, array[i]);
      if (result != i)
        printf ("seq_search() returned %d looking for %d - expected %d\n",
                result, array[i], i);
    }

  return 0;
}
Пример #4
0
void main(int argc, const char* argv[]){
	if(argc < 2){
		printf("You have to enter size of array \n");
		exit(0);
	}	

	int num = atoi(argv[1]);
	int array[num];
	int i = 0;
	int num_req;
	for(i = 0; i < num; i++){
		array[i] = rand() % num;
	}


	print(array, num);	
	printf("Enter element to be searched \n");
	scanf("%d",&num_req);

	seq_search(array,num, num_req);
		
}
/* INDEX_SIZE는 인덱스 테이블의 크기,n은 전체 데이터의 수 */
int index_search(int key)
{  
   int i, low, high;
	/* 키 값이 리스트 범위 내의 값이 아니면 탐색 종료 */
   if(key<list[0] || key>list[n-1])
      return -1;

   /* 인덱스 테이블을 조사하여 해당키의 구간 결정 */
   for(i=0; i<INDEX_SIZE; i++) 
      if(index_list[i].key<=key &&
			 index_list[i+1].key>key)
	 	break;
   if(i==INDEX_SIZE){  /* 인덱스테이블의 끝이면 */
      low = index_list[i-1].index;   
      high = n;
   }
   else{
      low = index_list[i].index;  
      high = index_list[i+1].index;
   }
   /* 예상되는 범위만 순차 탐색 */
   return seq_search(key, low, high);
}