Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program task28;
- var
- arr: array[0..31] of integer;
- i, count, j: integer;
- procedure qsort(l,r: integer);
- var
- w, q, i, j: integer;
- begin
- i := l; j := r;
- q := arr[(l+r) div 2];
- repeat
- while (arr[i] < q) do inc(i);
- while (q < arr[j]) do dec(j);
- if (i <= j) then
- begin
- w:=arr[i];
- arr[i] := arr[j];
- arr[j] := w;
- inc(i);
- dec(j);
- end;
- until (i > j);
- if (l < j) then qSort(l,j);
- if (i < r) then qSort(i,r);
- end;
- function binsearch(x, l, r: integer): integer;
- var
- m: integer;
- begin
- result := -1;
- while r - l > 1 do begin
- m := (r + l) div 2;
- count += 1;
- if arr[m] < x then
- l := m
- else
- r := m;
- end;
- if arr[l] = x then result := l;
- if arr[r] = x then result := r;
- end;
- begin
- randomize();
- count := 0;
- for i := 0 to 31 do begin
- arr[i] := random(101);
- write(arr[i], ' ');
- end;
- writeln;
- qsort(0, 31);
- for i := 0 to 999 do
- binsearch(random(101), 0, 31);
- writeln(count / 1000);
- end.
Add Comment
Please, Sign In to add comment