Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- #define N 100
- int arr[N];
- /*Linear seach return -1 if key is not found, otherwise it returns the index for key.*/
- int linear_search(int key){
- int i;
- for(i=0;i<N;i++){
- if(arr[i]==key){
- return i;
- }
- }
- return -1;
- }
- void sortare()
- {
- int i, j, aux;
- for (i = 0;i <= N;i++)
- {
- for (j = i;j < N;j++)
- {
- if (arr[i] > arr[j])
- {
- aux = arr[i];
- arr[i] = arr[j];
- arr[j] = aux;
- }
- }
- }
- }
- int cautare_binara(int l, int r, int x)
- {
- if (r >= l) {
- int mid = l + (r - l) / 2;
- if (arr[mid] == x)
- return mid;
- if (arr[mid] > x)
- return cautare_binara(l, mid - 1, x);
- return cautare_binara(mid + 1, r, x);
- }
- return -1;
- }
- int main()
- {
- //int arr[N];
- int i, j;
- int nr, pozitie, nr1,pozitie1;
- int flag_end = 1;
- srand(time(NULL)); //pt a nu se repeta numerele pseudorandom
- for(i=0;i<N;i++){
- flag_end = 1;
- while(flag_end){
- flag_end = 0; //false
- nr = rand()%1000; //generare de numere intre 0 si 999
- for(j=0;j<N;j++){
- if(arr[j] == nr){
- flag_end = 1; //daca am gasit nr in array
- }
- }
- if(!flag_end){
- arr[i] = nr;
- break;
- }
- }
- }
- /*for(i=0;i<N;i++){
- arr[i]=rand()%1000; //numere intre 0 si 999
- }*/
- for(i=0;i<N;i++){
- printf("%d ", arr[i]);
- //printf("\n");
- }
- printf("\nCautam liniar nr:");
- scanf("%d", &nr);
- pozitie = linear_search(nr);
- if(pozitie == -1) printf("\n Numarul nu a fost gasit.");
- else printf("\nNumarul se afla pe pozitia %d in arr", pozitie);
- printf("\nLista sortata:\n");
- sortare();
- for(i=0;i<N;i++){
- printf("%d ", arr[i]);
- }
- printf("\nCautam binar nr:");
- scanf("%d", &nr1);
- pozitie1 = cautare_binara(0, 99, nr1);
- if(pozitie1 == -1) printf("\nNr nu s-a gasit.");
- else printf("\nNr s-a gasit pe pozitia %d",pozitie1);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement