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 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | <?php function quicksort( $array ) { $cur = 1; $stack[1]['l'] = 0; $stack[1]['r'] = count($array)-1; do { $l = $stack[$cur]['l']; $r = $stack[$cur]['r']; $cur--; do { $i = $l; $j = $r; $tmp = $array[(int)( ($l+$r)/2 )][1]; // partion the array in two parts. // left from $tmp are with smaller values, // right from $tmp are with bigger ones do { while( $array[$i][1] < $tmp ) $i++; while( $tmp < $array[$j][1] ) $j--; // swap elements from the two sides if( $i <= $j ) { $w = $array[$i]; $array[$i] = $array[$j]; $array[$j] = $w; $i++; $j--; } }while( $i <= $j ); if( $i < $r ) { $cur++; $stack[$cur]['l'] = $i; $stack[$cur]['r'] = $r; } $r = $j; }while( $l < $r ); }while( $cur != 0 ); return $array; } function microtime_float() { list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); } function set(&$uzytkownik) { $uzytkownik[0][0] = "Jasiu"; $uzytkownik[0][1] = 22; $uzytkownik[1][0] = "Wacek"; $uzytkownik[1][1] = 21; $uzytkownik[2][0] = "Misiek"; $uzytkownik[2][1] = 16; $uzytkownik[3][0] = "Kasia"; $uzytkownik[3][1] = 11; } function cmpfunc($a, $b){return ($a[1] == $b[1]) ? 0 : ($a[1] < $b[1]) ? -1 : 1;} $time = microtime_float(); for ($i = 0; $i<5000; $i++) { set($uzytkownik); usort($uzytkownik, 'cmpfunc'); } $time = microtime_float()-$time; echo "usort: ".$time."<br>"; $time = microtime_float(); for ($i = 0; $i<5000; $i++) { set($uzytkownik); $uzytkownik = quicksort($uzytkownik); } $time = microtime_float()-$time; echo "quicksort: ".$time."<br>"; ?> |
PD9waHAKZnVuY3Rpb24gcXVpY2tzb3J0KCAkYXJyYXkgKQp7CiAkY3VyID0gMTsKICRzdGFja1sxXVsnbCddID0gMDsKICRzdGFja1sxXVsnciddID0gY291bnQoJGFycmF5KS0xOwogCiBkbyAKIHsKICAkbCA9ICRzdGFja1skY3VyXVsnbCddOwogICRyID0gJHN0YWNrWyRjdXJdWydyJ107CiAgJGN1ci0tOwogCiAgZG8KICB7CiAgICRpID0gJGw7CiAgICRqID0gJHI7CiAgICR0bXAgPSAkYXJyYXlbKGludCkoICgkbCskcikvMiApXVsxXTsKIAogICAvLyBwYXJ0aW9uIHRoZSBhcnJheSBpbiB0d28gcGFydHMuCiAgIC8vIGxlZnQgZnJvbSAkdG1wIGFyZSB3aXRoIHNtYWxsZXIgdmFsdWVzLAogICAvLyByaWdodCBmcm9tICR0bXAgYXJlIHdpdGggYmlnZ2VyIG9uZXMKICAgZG8KICAgewogICAgd2hpbGUoICRhcnJheVskaV1bMV0gPCAkdG1wICkKICAgICAkaSsrOwogCiAgICB3aGlsZSggJHRtcCA8ICRhcnJheVskal1bMV0gKSAKICAgICAkai0tOwogCiAgICAvLyBzd2FwIGVsZW1lbnRzIGZyb20gdGhlIHR3byBzaWRlcyAKICAgIGlmKCAkaSA8PSAkaiApCiAgICB7CiAgICAgJHcgPSAkYXJyYXlbJGldOwogICAgICRhcnJheVskaV0gPSAkYXJyYXlbJGpdOwogICAgICRhcnJheVskal0gPSAkdzsKIAogICAgICRpKys7CiAgICAgJGotLTsKICAgIH0KIAogICB9d2hpbGUoICRpIDw9ICRqICk7CiAKIAogICBpZiggJGkgPCAkciApCiAgIHsKICAgICRjdXIrKzsKICAgICRzdGFja1skY3VyXVsnbCddID0gJGk7CiAgICAkc3RhY2tbJGN1cl1bJ3InXSA9ICRyOwogICB9CiAgICRyID0gJGo7CiAKICB9d2hpbGUoICRsIDwgJHIgKTsKIAogfXdoaWxlKCAkY3VyICE9IDAgKTsKIAogcmV0dXJuICRhcnJheTsKfQoKZnVuY3Rpb24gbWljcm90aW1lX2Zsb2F0KCkKewogICAgbGlzdCgkdXNlYywgJHNlYykgPSBleHBsb2RlKCIgIiwgbWljcm90aW1lKCkpOwogICAgcmV0dXJuICgoZmxvYXQpJHVzZWMgKyAoZmxvYXQpJHNlYyk7Cn0KCmZ1bmN0aW9uIHNldCgmJHV6eXRrb3duaWspCnsKICAgICR1enl0a293bmlrWzBdWzBdID0gIkphc2l1IjsKCSR1enl0a293bmlrWzBdWzFdID0gMjI7CgkkdXp5dGtvd25pa1sxXVswXSA9ICJXYWNlayI7CgkkdXp5dGtvd25pa1sxXVsxXSA9IDIxOwoJJHV6eXRrb3duaWtbMl1bMF0gPSAiTWlzaWVrIjsKCSR1enl0a293bmlrWzJdWzFdID0gMTY7CgkkdXp5dGtvd25pa1szXVswXSA9ICJLYXNpYSI7CgkkdXp5dGtvd25pa1szXVsxXSA9IDExOwp9CgpmdW5jdGlvbiBjbXBmdW5jKCRhLCAkYil7cmV0dXJuICgkYVsxXSA9PSAkYlsxXSkgPyAwIDogKCRhWzFdIDwgJGJbMV0pID8gLTEgOiAxO30KCiR0aW1lID0gbWljcm90aW1lX2Zsb2F0KCk7CmZvciAoJGkgPSAwOyAkaTw1MDAwOyAkaSsrKQp7CglzZXQoJHV6eXRrb3duaWspOwoJdXNvcnQoJHV6eXRrb3duaWssICdjbXBmdW5jJyk7Cn0KJHRpbWUgPSBtaWNyb3RpbWVfZmxvYXQoKS0kdGltZTsKZWNobyAidXNvcnQ6ICIuJHRpbWUuIjxicj4iOwoKJHRpbWUgPSBtaWNyb3RpbWVfZmxvYXQoKTsKZm9yICgkaSA9IDA7ICRpPDUwMDA7ICRpKyspCnsKCXNldCgkdXp5dGtvd25payk7CgkkdXp5dGtvd25payA9IHF1aWNrc29ydCgkdXp5dGtvd25payk7Cn0KJHRpbWUgPSBtaWNyb3RpbWVfZmxvYXQoKS0kdGltZTsKZWNobyAicXVpY2tzb3J0OiAiLiR0aW1lLiI8YnI+IjsKPz4=
-
upload with new input
-
result: Success time: 0.11s memory: 13112 kB returned value: 0
usort: 0.0313699245453<br>quicksort: 0.0621209144592<br>


