Advertisement
Guest User

Untitled

a guest
Sep 3rd, 2015
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.46 KB | None | 0 0
  1. //PROGRAM CODE 9.6
  2. #include<iostream.h>
  3. #include<conio.h>
  4. #define max 30
  5. void createIndex(int index[],int isize,int A[],int asize)
  6. {
  7. int i,j;
  8. for(i=0,j=0;i<asize;i+=8,j++)
  9. {
  10. index[j]= A[i];
  11. }
  12. index[j] = A[asize-1];
  13. }
  14. int indexSeqSearch(int val, int index[], int isize, int A[], int asize)
  15. {
  16. int i=0,j=0,pos=0;
  17. int high=0,low=0;
  18. if(val > index[isize-1] && val < index[0])
  19. return -1;
  20. while(i<isize)
  21. {
  22. if(val == index[i])
  23. {
  24. pos = 8 * i; // here 8 is step size
  25. return pos;
  26. }
  27. if(val < index[i])
  28. {
  29. low = 8 * (i-1);
  30. high = 8 * i;
  31. break;
  32. }
  33. else
  34. {
  35. low = 8 * i;
  36. high = 8 * (i+1);
  37. }
  38. i++;
  39. }
  40. cout<<"\n low ="<<low<<"high"<<high;
  41. while(low < high) // search in array from index low to high
  42. {
  43. if(val == A[low])
  44. return low;
  45. else
  46. low++;
  47. }
  48. return -1;
  49. }
  50. int main()
  51. {
  52. int A[max]= {8,20,26,38,90,105,206,221,229,287,309,312,340,367,483,492,502,551,618,641,698,711,764,796};
  53. int index[(max/8)+1]={0};
  54. int position,t;
  55. int key,i,choice;
  56. int opt=0,pos=0;
  57. clrscr();
  58. cout<<"Enter number to be searched : ";
  59. cin>>key;
  60. t=(max/8)+1;
  61. createIndex(&index[0],t,&A[0],max);
  62. pos = indexSeqSearch(key, index,t,A,max);
  63. if(pos != -1)
  64. {
  65. cout<<"\n\nFound at position "<< pos;
  66. }
  67. else
  68. cout<<"\n\nNot found";
  69. getch();
  70. return 0;
  71. }
  72. /************** Output **************************
  73. Enter number to be searched: 20
  74. low = 0 high=8
  75. 20 found at position 1
  76. Enter number to be searched: 711
  77. low = 16 high=24
  78. 711 found at position 21
  79. Enter number to be searched: 200
  80. low = 0 high=8
  81. 200 not found
  82. ***************************************************/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement