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

Function bsgs_partition

keyhunt.cpp:3691–3721  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3689}
3690
3691int64_t bsgs_partition(struct bsgs_xvalue *arr, int64_t n) {
3692 struct bsgs_xvalue pivot;
3693 int64_t r,left,right;
3694 r = n/2;
3695 pivot = arr[r];
3696 left = 0;
3697 right = n-1;
3698 do {
3699 while(left < right && memcmp(arr[left].value,pivot.value,BSGS_XVALUE_RAM) <= 0 ) {
3700 left++;
3701 }
3702 while(right >= left && memcmp(arr[right].value,pivot.value,BSGS_XVALUE_RAM) > 0) {
3703 right--;
3704 }
3705 if(left < right) {
3706 if(left == r || right == r) {
3707 if(left == r) {
3708 r = right;
3709 }
3710 if(right == r) {
3711 r = left;
3712 }
3713 }
3714 bsgs_swap(&arr[right],&arr[left]);
3715 }
3716 }while(left < right);
3717 if(right != r) {
3718 bsgs_swap(&arr[right],&arr[r]);
3719 }
3720 return right;
3721}
3722
3723void bsgs_heapify(struct bsgs_xvalue *arr, int64_t n, int64_t i) {
3724 int64_t largest = i;

Callers 1

bsgs_introsortFunction · 0.70

Calls 1

bsgs_swapFunction · 0.70

Tested by

no test coverage detected