3.1.c 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149
  1. #include <stdio.h>
  2. int binsearch(int x, int v[], int n);
  3. int binsearch2(int x, int v[], int n);
  4. int binsearch3(int x, int v[], int n);
  5. int binsearch4(int x, int v[], int n);
  6. int main()
  7. {
  8. int sorted_ary[] = {1,
  9. 2,
  10. 3,
  11. 4,
  12. 5,
  13. 6,
  14. 7,
  15. 8,
  16. 9,
  17. 10,
  18. 11,
  19. 74,
  20. 132,
  21. 132,
  22. 137,
  23. 210,
  24. 216,
  25. 227,
  26. 231,
  27. 311,
  28. 330,
  29. 367,
  30. 431,
  31. 436,
  32. 455,
  33. 496,
  34. 502,
  35. 519,
  36. 546,
  37. 552,
  38. 573,
  39. 579,
  40. 637,
  41. 683,
  42. 693,
  43. 703,
  44. 732,
  45. 739,
  46. 740,
  47. 792,
  48. 827,
  49. 892,
  50. 962,
  51. 1015,
  52. 1062,
  53. 1063,
  54. 1078,
  55. 1083,
  56. 1099,
  57. 1110,
  58. 1124,
  59. 1165,
  60. 1193,
  61. 1200,
  62. 1218,
  63. 1229,
  64. 1286,
  65. 1289,
  66. 1289,
  67. 1296,
  68. 1300,
  69. 1302,
  70. 1310,
  71. 1313,
  72. 1326,
  73. 1353,
  74. 1372,
  75. 1383,
  76. 1429,
  77. 1454,
  78. 1455,
  79. 1464,
  80. 1472,
  81. 1481,
  82. 1515,
  83. 1578,
  84. 1588,
  85. 1604,
  86. 1620,
  87. 1627,
  88. 1653,
  89. 1700,
  90. 1741,
  91. 1790,
  92. 1857,
  93. 1953,
  94. 1982,
  95. 2023,
  96. 2049,
  97. 2073,
  98. 2077,
  99. 2120,
  100. 2127,
  101. 2128,
  102. 2137,
  103. 2160,
  104. 2172,
  105. 2193,
  106. 2212,
  107. 2228,
  108. 2250,
  109. 2300,
  110. 2347,
  111. 2396,
  112. 2405,
  113. 2437,
  114. 2440,
  115. 2477,
  116. 2484,
  117. 2618,
  118. 2734,
  119. 2739,
  120. 2749,
  121. 2856,
  122. 2900,
  123. 2967,
  124. 2973,
  125. 2991,
  126. 3022,
  127. 3039,
  128. 3050,
  129. 3083,
  130. 3100,
  131. 3163,
  132. 3172,
  133. 3177,
  134. 3213,
  135. 3231,
  136. 3241,
  137. 3275,
  138. 3288,
  139. 3289,
  140. 3319,
  141. 3406,
  142. 3417,
  143. 3473,
  144. 3502,
  145. 3521,
  146. 3548,
  147. 3568,
  148. 3614,
  149. 3615,
  150. 3657,
  151. 3664,
  152. 3719,
  153. 3779,
  154. 3808,
  155. 3813,
  156. 3823,
  157. 3848,
  158. 3902,
  159. 3918,
  160. 3930,
  161. 3939,
  162. 3949,
  163. 3965,
  164. 3977,
  165. 4010,
  166. 4018,
  167. 4094,
  168. 4110,
  169. 4148,
  170. 4152,
  171. 4180,
  172. 4265,
  173. 4271,
  174. 4282,
  175. 4309,
  176. 4331,
  177. 4373,
  178. 4374,
  179. 4410,
  180. 4414,
  181. 4485,
  182. 4576,
  183. 4584,
  184. 4589,
  185. 4592,
  186. 4675,
  187. 4676,
  188. 4677,
  189. 4715,
  190. 4719,
  191. 4772,
  192. 4823,
  193. 4827,
  194. 4846,
  195. 4874,
  196. 4881,
  197. 4906,
  198. 4968,
  199. 4976,
  200. 5031,
  201. 5077,
  202. 5083,
  203. 5115,
  204. 5178,
  205. 5251,
  206. 5265,
  207. 5308,
  208. 5335,
  209. 5365,
  210. 5409,
  211. 5417,
  212. 5507,
  213. 5523,
  214. 5537,
  215. 5549,
  216. 5600,
  217. 5615,
  218. 5649,
  219. 5667,
  220. 5686,
  221. 5764,
  222. 5792,
  223. 5795,
  224. 5799,
  225. 5822,
  226. 5843,
  227. 5885,
  228. 5910,
  229. 5926,
  230. 6049,
  231. 6069,
  232. 6116,
  233. 6157,
  234. 6200,
  235. 6203,
  236. 6211,
  237. 6324,
  238. 6406,
  239. 6515,
  240. 6521,
  241. 6551,
  242. 6573,
  243. 6587,
  244. 6606,
  245. 6629,
  246. 6708,
  247. 6720,
  248. 6763,
  249. 6850,
  250. 6881,
  251. 6930,
  252. 6955,
  253. 6979,
  254. 7063,
  255. 7100,
  256. 7210,
  257. 7216,
  258. 7283,
  259. 7339,
  260. 7350,
  261. 7363,
  262. 7399,
  263. 7413,
  264. 7435,
  265. 7449,
  266. 7449,
  267. 7455,
  268. 7469,
  269. 7496,
  270. 7524,
  271. 7577,
  272. 7578,
  273. 7578,
  274. 7601,
  275. 7604,
  276. 7626,
  277. 7713,
  278. 7749,
  279. 7766,
  280. 7808,
  281. 7810,
  282. 7827,
  283. 7837,
  284. 7948,
  285. 7962,
  286. 7966,
  287. 7996,
  288. 8017,
  289. 8056,
  290. 8092,
  291. 8151,
  292. 8189,
  293. 8204,
  294. 8225,
  295. 8227,
  296. 8228,
  297. 8231,
  298. 8239,
  299. 8323,
  300. 8351,
  301. 8356,
  302. 8364,
  303. 8370,
  304. 8387,
  305. 8402,
  306. 8408,
  307. 8421,
  308. 8444,
  309. 8447,
  310. 8466,
  311. 8468,
  312. 8580,
  313. 8630,
  314. 8671,
  315. 8694,
  316. 8729,
  317. 8812,
  318. 8815,
  319. 8822,
  320. 8826,
  321. 8855,
  322. 8924,
  323. 8955,
  324. 9006,
  325. 9008,
  326. 9027,
  327. 9065,
  328. 9077,
  329. 9107,
  330. 9153,
  331. 9157,
  332. 9184,
  333. 9188,
  334. 9191,
  335. 9207,
  336. 9286,
  337. 9319,
  338. 9358,
  339. 9377,
  340. 9466,
  341. 9491,
  342. 9527,
  343. 9547,
  344. 9592,
  345. 9641,
  346. 9656,
  347. 9745,
  348. 9828,
  349. 9834,
  350. 9837,
  351. 9840,
  352. 9869,
  353. 9895,
  354. 9916,
  355. 9925,
  356. 9943,
  357. 9957,
  358. 9963,
  359. 10019,
  360. 10066,
  361. 10083,
  362. 10095,
  363. 10114,
  364. 10156,
  365. 10168,
  366. 10259,
  367. 10276,
  368. 10428,
  369. 10435,
  370. 10461,
  371. 10509,
  372. 10540,
  373. 10578,
  374. 10597,
  375. 10624,
  376. 10647,
  377. 10664,
  378. 10757,
  379. 10762,
  380. 10785,
  381. 10797,
  382. 10803,
  383. 10813,
  384. 10822,
  385. 10844,
  386. 10847,
  387. 10859,
  388. 10910,
  389. 10990,
  390. 11065,
  391. 11091,
  392. 11119,
  393. 11125,
  394. 11313,
  395. 11315,
  396. 11534,
  397. 11622,
  398. 11633,
  399. 11677,
  400. 11730,
  401. 11757,
  402. 11801,
  403. 11809,
  404. 11931,
  405. 11965,
  406. 11965,
  407. 11994,
  408. 11996,
  409. 11998,
  410. 12097,
  411. 12098,
  412. 12133,
  413. 12146,
  414. 12160,
  415. 12209,
  416. 12215,
  417. 12289,
  418. 12338,
  419. 12354,
  420. 12382,
  421. 12391,
  422. 12395,
  423. 12409,
  424. 12441,
  425. 12478,
  426. 12489,
  427. 12497,
  428. 12507,
  429. 12520,
  430. 12544,
  431. 12549,
  432. 12608,
  433. 12741,
  434. 12790,
  435. 12896,
  436. 12901,
  437. 13084,
  438. 13094,
  439. 13115,
  440. 13115,
  441. 13157,
  442. 13206,
  443. 13269,
  444. 13316,
  445. 13375,
  446. 13393,
  447. 13435,
  448. 13435,
  449. 13440,
  450. 13454,
  451. 13504,
  452. 13512,
  453. 13537,
  454. 13583,
  455. 13590,
  456. 13616,
  457. 13621,
  458. 13632,
  459. 13638,
  460. 13668,
  461. 13732,
  462. 13787,
  463. 13826,
  464. 13831,
  465. 13848,
  466. 13855,
  467. 13881,
  468. 13885,
  469. 13918,
  470. 13971,
  471. 13988,
  472. 14025,
  473. 14031,
  474. 14107,
  475. 14179,
  476. 14190,
  477. 14195,
  478. 14259,
  479. 14315,
  480. 14321,
  481. 14350,
  482. 14396,
  483. 14401,
  484. 14410,
  485. 14417,
  486. 14425,
  487. 14450,
  488. 14451,
  489. 14537,
  490. 14654,
  491. 14655,
  492. 14658,
  493. 14786,
  494. 14800,
  495. 14808,
  496. 14826,
  497. 14876,
  498. 14888,
  499. 14925,
  500. 14956,
  501. 14960,
  502. 14996,
  503. 15063,
  504. 15102,
  505. 15110,
  506. 15150,
  507. 15163,
  508. 15165,
  509. 15170,
  510. 15173,
  511. 15176,
  512. 15210,
  513. 15211,
  514. 15212,
  515. 15341,
  516. 15347,
  517. 15370,
  518. 15419,
  519. 15421,
  520. 15465,
  521. 15508,
  522. 15525,
  523. 15684,
  524. 15701,
  525. 15740,
  526. 15774,
  527. 15780,
  528. 15825,
  529. 15840,
  530. 15845,
  531. 15881,
  532. 15883,
  533. 15886,
  534. 15904,
  535. 15925,
  536. 15992,
  537. 16013,
  538. 16071,
  539. 16071,
  540. 16112,
  541. 16132,
  542. 16141,
  543. 16163,
  544. 16188,
  545. 16255,
  546. 16282,
  547. 16412,
  548. 16419,
  549. 16423,
  550. 16426,
  551. 16474,
  552. 16509,
  553. 16522,
  554. 16573,
  555. 16592,
  556. 16596,
  557. 16627,
  558. 16649,
  559. 16708,
  560. 16717,
  561. 16745,
  562. 16767,
  563. 16792,
  564. 16844,
  565. 16859,
  566. 16889,
  567. 16889,
  568. 16903,
  569. 16917,
  570. 16942,
  571. 17023,
  572. 17036,
  573. 17069,
  574. 17080,
  575. 17140,
  576. 17246,
  577. 17302,
  578. 17346,
  579. 17357,
  580. 17409,
  581. 17420,
  582. 17421,
  583. 17454,
  584. 17464,
  585. 17512,
  586. 17617,
  587. 17673,
  588. 17767,
  589. 17808,
  590. 17847,
  591. 17875,
  592. 17899,
  593. 17925,
  594. 17952,
  595. 17972,
  596. 18055,
  597. 18083,
  598. 18102,
  599. 18105,
  600. 18169,
  601. 18240,
  602. 18243,
  603. 18244,
  604. 18250,
  605. 18334,
  606. 18365,
  607. 18371,
  608. 18399,
  609. 18452,
  610. 18494,
  611. 18498,
  612. 18504,
  613. 18539,
  614. 18559,
  615. 18624,
  616. 18716,
  617. 18783,
  618. 18871,
  619. 18872,
  620. 18888,
  621. 18889,
  622. 18893,
  623. 18901,
  624. 18959,
  625. 18987,
  626. 19017,
  627. 19039,
  628. 19070,
  629. 19102,
  630. 19141,
  631. 19146,
  632. 19158,
  633. 19185,
  634. 19220,
  635. 19243,
  636. 19267,
  637. 19338,
  638. 19351,
  639. 19373,
  640. 19493,
  641. 19744,
  642. 19754,
  643. 19764,
  644. 19772,
  645. 19827,
  646. 19834,
  647. 19880,
  648. 19894,
  649. 19939,
  650. 19963,
  651. 19971,
  652. 20034,
  653. 20048,
  654. 20050,
  655. 20050,
  656. 20116,
  657. 20197,
  658. 20210,
  659. 20227,
  660. 20245,
  661. 20285,
  662. 20308,
  663. 20323,
  664. 20363,
  665. 20381,
  666. 20531,
  667. 20571,
  668. 20595,
  669. 20675,
  670. 20695,
  671. 20700,
  672. 20728,
  673. 20759,
  674. 20782,
  675. 20789,
  676. 20817,
  677. 20837,
  678. 20869,
  679. 20912,
  680. 20919,
  681. 20943,
  682. 21046,
  683. 21050,
  684. 21075,
  685. 21076,
  686. 21119,
  687. 21129,
  688. 21136,
  689. 21156,
  690. 21181,
  691. 21203,
  692. 21206,
  693. 21223,
  694. 21281,
  695. 21345,
  696. 21354,
  697. 21375,
  698. 21411,
  699. 21456,
  700. 21489,
  701. 21615,
  702. 21642,
  703. 21674,
  704. 21724,
  705. 21726,
  706. 21729,
  707. 21733,
  708. 21736,
  709. 21748,
  710. 21836,
  711. 21896,
  712. 21937,
  713. 21965,
  714. 21984,
  715. 21999,
  716. 22027,
  717. 22050,
  718. 22054,
  719. 22125,
  720. 22161,
  721. 22176,
  722. 22216,
  723. 22306,
  724. 22323,
  725. 22350,
  726. 22365,
  727. 22367,
  728. 22376,
  729. 22383,
  730. 22396,
  731. 22412,
  732. 22424,
  733. 22448,
  734. 22451,
  735. 22516,
  736. 22535,
  737. 22561,
  738. 22596,
  739. 22637,
  740. 22688,
  741. 22703,
  742. 22713,
  743. 22771,
  744. 22820,
  745. 22874,
  746. 22894,
  747. 22925,
  748. 22933,
  749. 22962,
  750. 22963,
  751. 22972,
  752. 23010,
  753. 23016,
  754. 23258,
  755. 23274,
  756. 23360,
  757. 23367,
  758. 23384,
  759. 23430,
  760. 23446,
  761. 23480,
  762. 23571,
  763. 23703,
  764. 23703,
  765. 23735,
  766. 23761,
  767. 23805,
  768. 23887,
  769. 23950,
  770. 24009,
  771. 24088,
  772. 24097,
  773. 24107,
  774. 24132,
  775. 24143,
  776. 24176,
  777. 24207,
  778. 24226,
  779. 24255,
  780. 24274,
  781. 24363,
  782. 24386,
  783. 24389,
  784. 24392,
  785. 24394,
  786. 24410,
  787. 24478,
  788. 24496,
  789. 24567,
  790. 24578,
  791. 24635,
  792. 24636,
  793. 24658,
  794. 24703,
  795. 24705,
  796. 24739,
  797. 24883,
  798. 24909,
  799. 24916,
  800. 24938,
  801. 24976,
  802. 24978,
  803. 24987,
  804. 25031,
  805. 25142,
  806. 25144,
  807. 25227,
  808. 25312,
  809. 25316,
  810. 25344,
  811. 25351,
  812. 25376,
  813. 25489,
  814. 25502,
  815. 25502,
  816. 25509,
  817. 25559,
  818. 25656,
  819. 25680,
  820. 25697,
  821. 25720,
  822. 25789,
  823. 25898,
  824. 25921,
  825. 25926,
  826. 25999,
  827. 26006,
  828. 26025,
  829. 26045,
  830. 26052,
  831. 26158,
  832. 26162,
  833. 26195,
  834. 26266,
  835. 26304,
  836. 26371,
  837. 26373,
  838. 26455,
  839. 26456,
  840. 26474,
  841. 26544,
  842. 26614,
  843. 26637,
  844. 26647,
  845. 26685,
  846. 26686,
  847. 26706,
  848. 26712,
  849. 26716,
  850. 26722,
  851. 26824,
  852. 26867,
  853. 26895,
  854. 26986,
  855. 27009,
  856. 27016,
  857. 27016,
  858. 27059,
  859. 27078,
  860. 27110,
  861. 27124,
  862. 27157,
  863. 27168,
  864. 27181,
  865. 27192,
  866. 27213,
  867. 27286,
  868. 27306,
  869. 27308,
  870. 27401,
  871. 27465,
  872. 27522,
  873. 27575,
  874. 27642,
  875. 27665,
  876. 27670,
  877. 27722,
  878. 27760,
  879. 27795,
  880. 27801,
  881. 27827,
  882. 27849,
  883. 27870,
  884. 27877,
  885. 27883,
  886. 27891,
  887. 27984,
  888. 27993,
  889. 28025,
  890. 28075,
  891. 28108,
  892. 28118,
  893. 28124,
  894. 28132,
  895. 28139,
  896. 28149,
  897. 28219,
  898. 28317,
  899. 28320,
  900. 28342,
  901. 28375,
  902. 28443,
  903. 28476,
  904. 28490,
  905. 28492,
  906. 28506,
  907. 28536,
  908. 28578,
  909. 28591,
  910. 28602,
  911. 28660,
  912. 28661,
  913. 28685,
  914. 28780,
  915. 28808,
  916. 28820,
  917. 28897,
  918. 28947,
  919. 29024,
  920. 29032,
  921. 29073,
  922. 29095,
  923. 29118,
  924. 29204,
  925. 29224,
  926. 29233,
  927. 29246,
  928. 29348,
  929. 29369,
  930. 29380,
  931. 29449,
  932. 29479,
  933. 29503,
  934. 29510,
  935. 29570,
  936. 29658,
  937. 29662,
  938. 29665,
  939. 29675,
  940. 29677,
  941. 29718,
  942. 29719,
  943. 29813,
  944. 29849,
  945. 29859,
  946. 29869,
  947. 29908,
  948. 29963,
  949. 29973,
  950. 30007,
  951. 30011,
  952. 30050,
  953. 30066,
  954. 30067,
  955. 30107,
  956. 30175,
  957. 30203,
  958. 30206,
  959. 30230,
  960. 30232,
  961. 30270,
  962. 30292,
  963. 30346,
  964. 30372,
  965. 30406,
  966. 30407,
  967. 30416,
  968. 30435,
  969. 30451,
  970. 30486,
  971. 30522,
  972. 30532,
  973. 30557,
  974. 30586,
  975. 30589,
  976. 30627,
  977. 30642,
  978. 30718,
  979. 30732,
  980. 30748,
  981. 30791,
  982. 30809,
  983. 30845,
  984. 30875,
  985. 30890,
  986. 30893,
  987. 30906,
  988. 30939,
  989. 30941,
  990. 30954,
  991. 31000,
  992. 31009,
  993. 31040,
  994. 31044,
  995. 31047,
  996. 31054,
  997. 31077,
  998. 31090,
  999. 31149,
  1000. 31160,
  1001. 31214,
  1002. 31227,
  1003. 31264,
  1004. 31269,
  1005. 31362,
  1006. 31459,
  1007. 31488,
  1008. 31490,
  1009. 31508,
  1010. 31619,
  1011. 31629,
  1012. 31715,
  1013. 31805,
  1014. 31815,
  1015. 31816,
  1016. 31817,
  1017. 31842,
  1018. 31912};
  1019. //{
  1020. //}
  1021. // for (int i =0; i < 1011; i++)
  1022. // printf("%d\n",sorted_ary[i]);
  1023. for (int i =0; i < 10000; i++)
  1024. {
  1025. int k = binsearch4(i,sorted_ary,1011);
  1026. printf("returns: %d \n",k);
  1027. }
  1028. return(0);
  1029. }
  1030. /* binsearch: find x in v[0] <= v[1] <= ... <= v[n-1] */
  1031. int binsearch(int x, int v[], int n)
  1032. {
  1033. int low, high, mid;
  1034. low = 0;
  1035. high = n - 1;
  1036. while (low < high) {
  1037. mid = (low+high)/2;
  1038. if (x < v[mid])
  1039. high = mid;
  1040. else if (x > v[mid])
  1041. if (low!=mid)
  1042. low = mid;
  1043. else
  1044. {
  1045. if (x == v[high])
  1046. return high;
  1047. return -1;
  1048. }
  1049. else /* found match */
  1050. return mid;
  1051. }
  1052. return -1; /* no match */
  1053. }
  1054. /* binsearch: find x in v[0] <= v[1] <= ... <= v[n-1] */
  1055. int binsearch2(int x, int v[], int n)
  1056. {
  1057. int low, high, mid;
  1058. low = 0;
  1059. high = n - 1;
  1060. while (low < high)
  1061. {
  1062. mid = (low+high)/2;
  1063. if (x < v[mid])
  1064. high = mid;
  1065. else
  1066. {
  1067. if (x == v[mid])
  1068. return mid;
  1069. if (low != mid)
  1070. low = mid;
  1071. else
  1072. {
  1073. if (x == v[high])
  1074. return high;
  1075. if (x == v[low])
  1076. return low;
  1077. return -1;
  1078. }
  1079. }
  1080. }
  1081. return -1;
  1082. }
  1083. int binsearch3(int x, int v[], int n)
  1084. {
  1085. int low, high, mid;
  1086. low = 0;
  1087. high = n - 1;
  1088. while (low < high)
  1089. {
  1090. mid = (low+high)/2;
  1091. if (x < v[mid])
  1092. {
  1093. if (mid != high)
  1094. high = mid;
  1095. else
  1096. break;
  1097. }
  1098. else
  1099. {
  1100. if (x == v[mid])
  1101. break;
  1102. else if (low != mid)
  1103. low = mid;
  1104. else
  1105. break;
  1106. }
  1107. }
  1108. if (x == v[high])
  1109. return high;
  1110. if (x == v[mid])
  1111. return mid;
  1112. if (x == v[low])
  1113. return low;
  1114. return -1;
  1115. }
  1116. int binsearch4(int x, int v[], int n)
  1117. {
  1118. int low, high, mid;
  1119. low = 0;
  1120. high = n-1;
  1121. mid = (low+high)/2;
  1122. while ((low < high) && (x != v[mid]) && (mid != high) && (low != mid))
  1123. {
  1124. if (x < v[mid])
  1125. high=mid;
  1126. else
  1127. low=mid;
  1128. mid = (low+high)/2;
  1129. }
  1130. if (x == v[high])
  1131. return high;
  1132. if (x == v[mid])
  1133. return mid;
  1134. if (x == v[low])
  1135. return low;
  1136. return -1;
  1137. }