1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | #include <stdio.h> #include <stdlib.h> #include <time.h> void Swap_Me(int *first, int *second) { int tmp = *first; *first = *second; *second = tmp; } void Sort_Quick(int *data, int low, int high) { int i = low, j = high, x = data[(low + high) / 2]; do { while(data[i] < x) i++; while(data[j] > x) j--; if(i <= j) { Swap_Me(&data[i], &data[j]); i++; j--; } } while(i <= j); if(low < j) Sort_Quick(data, low, j); if(i < high) Sort_Quick(data, i, high); } void Array_Print(int *data, int size) { for(int i = 0; i < size; i++) { printf("[%i]: %i\r\n", i , data[i]); } } int Init(int **data) { srand((unsigned int)time(NULL)); int size = rand(); *data = (int*)malloc(size * sizeof(int)); for(int i = 0; i < size; i++) { *data[i] = rand(); } return size; } int main(void) { srand((unsigned int)time(NULL)); int array_length = rand(); int *data = (int*)malloc(array_length * sizeof(int)); for(int i = 0; i < array_length; i++) { data[i] = rand(); } Array_Print(data, array_length); Sort_Quick(data, 0, --array_length); Array_Print(data, array_length); return 0; } |
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHRpbWUuaD4KCnZvaWQgU3dhcF9NZShpbnQgKmZpcnN0LCBpbnQgKnNlY29uZCkKewoJaW50IHRtcCA9ICpmaXJzdDsKCSpmaXJzdCA9ICpzZWNvbmQ7Cgkqc2Vjb25kID0gdG1wOwp9Cgp2b2lkIFNvcnRfUXVpY2soaW50ICpkYXRhLCBpbnQgbG93LCBpbnQgaGlnaCkKewoJaW50IGkgPSBsb3csCgkJaiA9IGhpZ2gsCgkJeCA9IGRhdGFbKGxvdyArIGhpZ2gpIC8gMl07CgoJZG8KCXsKCQl3aGlsZShkYXRhW2ldIDwgeCkgaSsrOwoJCXdoaWxlKGRhdGFbal0gPiB4KSBqLS07CgoJCWlmKGkgPD0gaikKCQl7CgkJCVN3YXBfTWUoJmRhdGFbaV0sICZkYXRhW2pdKTsKCQkJaSsrOwoJCQlqLS07CgkJfQoKCX0gd2hpbGUoaSA8PSBqKTsKCglpZihsb3cgPCBqKSBTb3J0X1F1aWNrKGRhdGEsIGxvdywgaik7CglpZihpIDwgaGlnaCkgU29ydF9RdWljayhkYXRhLCBpLCBoaWdoKTsKfQoKdm9pZCBBcnJheV9QcmludChpbnQgKmRhdGEsIGludCBzaXplKQp7Cglmb3IoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQoJewoJCXByaW50ZigiWyVpXTogJWlcclxuIiwgaSAsIGRhdGFbaV0pOwoJfQp9CgppbnQgSW5pdChpbnQgKipkYXRhKQp7CglzcmFuZCgodW5zaWduZWQgaW50KXRpbWUoTlVMTCkpOwoKCWludCBzaXplID0gcmFuZCgpOwoJKmRhdGEgPSAoaW50KiltYWxsb2Moc2l6ZSAqIHNpemVvZihpbnQpKTsKCglmb3IoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQoJewoJCSpkYXRhW2ldID0gcmFuZCgpOwoJfQoKCXJldHVybiBzaXplOwp9CgppbnQgbWFpbih2b2lkKQp7CglzcmFuZCgodW5zaWduZWQgaW50KXRpbWUoTlVMTCkpOwoJaW50IGFycmF5X2xlbmd0aCA9IHJhbmQoKTsKCWludCAqZGF0YSA9IChpbnQqKW1hbGxvYyhhcnJheV9sZW5ndGggKiBzaXplb2YoaW50KSk7CgoJZm9yKGludCBpID0gMDsgaSA8IGFycmF5X2xlbmd0aDsgaSsrKQoJewoJCWRhdGFbaV0gPSByYW5kKCk7Cgl9CgoJQXJyYXlfUHJpbnQoZGF0YSwgYXJyYXlfbGVuZ3RoKTsKCVNvcnRfUXVpY2soZGF0YSwgMCwgLS1hcnJheV9sZW5ndGgpOwoJQXJyYXlfUHJpbnQoZGF0YSwgYXJyYXlfbGVuZ3RoKTsKCglyZXR1cm4gMDsKfQ==


