MCPcopy Create free account
hub / github.com/albertobsd/keyhunt / bsgs_partition

Function bsgs_partition

bsgsd.cpp:1491–1521  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1489}
1490
1491int64_t bsgs_partition(struct bsgs_xvalue *arr, int64_t n) {
1492 struct bsgs_xvalue pivot;
1493 int64_t r,left,right;
1494 r = n/2;
1495 pivot = arr[r];
1496 left = 0;
1497 right = n-1;
1498 do {
1499 while(left < right && memcmp(arr[left].value,pivot.value,BSGS_XVALUE_RAM) <= 0 ) {
1500 left++;
1501 }
1502 while(right >= left && memcmp(arr[right].value,pivot.value,BSGS_XVALUE_RAM) > 0) {
1503 right--;
1504 }
1505 if(left < right) {
1506 if(left == r || right == r) {
1507 if(left == r) {
1508 r = right;
1509 }
1510 if(right == r) {
1511 r = left;
1512 }
1513 }
1514 bsgs_swap(&arr[right],&arr[left]);
1515 }
1516 }while(left < right);
1517 if(right != r) {
1518 bsgs_swap(&arr[right],&arr[r]);
1519 }
1520 return right;
1521}
1522
1523void bsgs_heapify(struct bsgs_xvalue *arr, int64_t n, int64_t i) {
1524 int64_t largest = i;

Callers 1

bsgs_introsortFunction · 0.70

Calls 1

bsgs_swapFunction · 0.70

Tested by

no test coverage detected