int main () { int const SIZE = 100000; int values[SIZE]; int const key = 3; //Искомое for(int i=0; i<SIZE; ++i) { values[i] = rand()%(SIZE/10)+1; } srand(time(NULL)); int n; qsort (values, SIZE, sizeof(int), compare); //Функция сортировки for (n=0; n<100; n++) printf ("%d ",values[n]); int answer = binarySearch(key,values,SIZE); if(answer == -1) { printf("\n\nНе найдено\n"); } else { int counter = wider(answer,key,values,SIZE);//Функция поиска аналогичных элементов printf("\n\nИскомое (%d) найдено в позиции %d. Всего найдено: %d элементов.",key,answer,counter); } return 0; }
int rekursiv(uint16_t* f){ uint16_t i=0,j,k,ret,bak[81]; if (wider(f) == 0) return 0; if(mogl(f) == 81) return 1; for(j=0;j<81;j++) bak[j] = f[j]; while(freiheit(f[i]) == 1) i++; for(j=1;j<10;j++){ if((f[i]>> j) & 1 == 1){ set(f,i/9,i%9,(1<<j)); ret = rekursiv(f); if(ret == 0) for(k=0;k<81;k++) f[k] = bak[k]; if(ret == 1) return 1; } } return 0; }