ArinaRaguzina

Untitled

Jan 25th, 2019
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.04 KB | None | 0 0
  1. program task28;
  2. var
  3. arr: array[0..31] of integer;
  4. i, count, j: integer;
  5.  
  6. procedure qsort(l,r: integer);
  7. var
  8. w, q, i, j: integer;
  9. begin
  10. i := l; j := r;
  11. q := arr[(l+r) div 2];
  12. repeat
  13. while (arr[i] < q) do inc(i);
  14. while (q < arr[j]) do dec(j);
  15. if (i <= j) then
  16. begin
  17. w:=arr[i];
  18. arr[i] := arr[j];
  19. arr[j] := w;
  20. inc(i);
  21. dec(j);
  22. end;
  23. until (i > j);
  24. if (l < j) then qSort(l,j);
  25. if (i < r) then qSort(i,r);
  26. end;
  27.  
  28. function binsearch(x, l, r: integer): integer;
  29. var
  30. m: integer;
  31. begin
  32. result := -1;
  33. while r - l > 1 do begin
  34. m := (r + l) div 2;
  35. count += 1;
  36. if arr[m] < x then
  37. l := m
  38. else
  39. r := m;
  40. end;
  41. if arr[l] = x then result := l;
  42. if arr[r] = x then result := r;
  43. end;
  44.  
  45. begin
  46. randomize();
  47. count := 0;
  48. for i := 0 to 31 do begin
  49. arr[i] := random(101);
  50. write(arr[i], ' ');
  51. end;
  52. writeln;
  53.  
  54. qsort(0, 31);
  55.  
  56. for i := 0 to 999 do
  57. binsearch(random(101), 0, 31);
  58.  
  59. writeln(count / 1000);
  60. end.
Add Comment
Please, Sign In to add comment