( smallset []uint16, largeset []uint16, )
| 508 | } |
| 509 | |
| 510 | func onesidedgallopingintersect2by2Cardinality( |
| 511 | smallset []uint16, |
| 512 | largeset []uint16, |
| 513 | ) int { |
| 514 | if 0 == len(smallset) { |
| 515 | return 0 |
| 516 | } |
| 517 | k1 := 0 |
| 518 | k2 := 0 |
| 519 | pos := 0 |
| 520 | s1 := largeset[k1] |
| 521 | s2 := smallset[k2] |
| 522 | mainwhile: |
| 523 | |
| 524 | for { |
| 525 | if s1 < s2 { |
| 526 | k1 = advanceUntil(largeset, k1, len(largeset), s2) |
| 527 | if k1 == len(largeset) { |
| 528 | break mainwhile |
| 529 | } |
| 530 | s1 = largeset[k1] |
| 531 | } |
| 532 | if s2 < s1 { |
| 533 | k2++ |
| 534 | if k2 == len(smallset) { |
| 535 | break mainwhile |
| 536 | } |
| 537 | s2 = smallset[k2] |
| 538 | } else { |
| 539 | |
| 540 | pos++ |
| 541 | k2++ |
| 542 | if k2 == len(smallset) { |
| 543 | break |
| 544 | } |
| 545 | s2 = smallset[k2] |
| 546 | k1 = advanceUntil(largeset, k1, len(largeset), s2) |
| 547 | if k1 == len(largeset) { |
| 548 | break mainwhile |
| 549 | } |
| 550 | s1 = largeset[k1] |
| 551 | } |
| 552 | |
| 553 | } |
| 554 | return pos |
| 555 | } |
| 556 | |
| 557 | func binarySearch(array []uint16, ikey uint16) int { |
| 558 | low := 0 |
no test coverage detected
searching dependent graphs…