Advertisement
Guest User

QuickSort

a guest
Mar 4th, 2016
269
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. /*Don't freak, is just a long init table!
  5. **Please note that it is kinda sorted in ascending way and the result of sort should be something like
  6. **... ...
  7. ** 5  10
  8. ** 7   8
  9. ** 3   8
  10. */
  11.  
  12. typedef struct MATCHES {
  13.     short size=439;
  14.     short values[439][2]={ { 3, 8 },
  15.             { 5, 10 },
  16.             { 7, 8 },
  17.             { 2, 11 },
  18.             { 1, 12 },
  19.             { 10, 13 },
  20.             { 14, 18 },
  21.             { 15, 16 },
  22.             { 18, 22 },
  23.             { 1, 30 },
  24.             { 11, 25 },
  25.             { 21, 28 },
  26.             { 22, 33 },
  27.             { 29, 34 },
  28.             { 31, 37 },
  29.             { 17, 21 },
  30.             { 13, 40 },
  31.             { 5, 41 },
  32.             { 34, 42 },
  33.             { 20, 46 },
  34.             { 41, 47 },
  35.             { 42, 48 },
  36.             { 34, 43 },
  37.             { 37, 45 },
  38.             { 48, 54 },
  39.             { 50, 52 },
  40.             { 35, 46 },
  41.             { 47, 61 },
  42.             { 34, 55 },
  43.             { 55, 56 },
  44.             { 1, 57 },
  45.             { 57, 59 },
  46.             { 54, 69 },
  47.             { 66, 67 },
  48.             { 35, 65 },
  49.             { 70, 71 },
  50.             { 69, 78 },
  51.             { 34, 79 },
  52.             { 40, 75 },
  53.             { 81, 84 },
  54.             { 33, 85 },
  55.             { 54, 82 },
  56.             { 42, 82 },
  57.             { 34, 83 },
  58.             { 84, 87 },
  59.             { 75, 88 },
  60.             { 85, 89 },
  61.             { 78, 90 },
  62.             { 86, 91 },
  63.             { 5, 86 },
  64.             { 89, 95 },
  65.             { 62, 91 },
  66.             { 93, 98 },
  67.             { 88, 100 },
  68.             { 95, 101 },
  69.             { 62, 102 },
  70.             { 5, 98 },
  71.             { 90, 113 },
  72.             { 102, 114 },
  73.             { 103, 115 },
  74.             { 105, 116 },
  75.             { 74, 114 },
  76.             { 116, 127 },
  77.             { 105, 123 },
  78.             { 61, 132 },
  79.             { 126, 133 },
  80.             { 127, 134 },
  81.             { 74, 137 },
  82.             { 134, 139 },
  83.             { 139, 146 },
  84.             { 61, 137 },
  85.             { 147, 149 },
  86.             { 148, 150 },
  87.             { 151, 154 },
  88.             { 155, 161 },
  89.             { 157, 164 },
  90.             { 158, 160 },
  91.             { 159, 161 },
  92.             { 132, 167 },
  93.             { 164, 169 },
  94.             { 113, 172 },
  95.             { 170, 175 },
  96.             { 165, 176 },
  97.             { 116, 178 },
  98.             { 167, 182 },
  99.             { 175, 184 },
  100.             { 176, 185 },
  101.             { 177, 186 },
  102.             { 172, 192 },
  103.             { 113, 183 },
  104.             { 185, 194 },
  105.             { 187, 195 },
  106.             { 178, 196 },
  107.             { 190, 198 },
  108.             { 181, 200 },
  109.             { 182, 201 },
  110.             { 196, 204 },
  111.             { 203, 210 },
  112.             { 192, 214 },
  113.             { 209, 210 },
  114.             { 204, 217 },
  115.             { 100, 201 },
  116.             { 214, 220 },
  117.             { 146, 217 },
  118.             { 146, 204 },
  119.             { 220, 228 },
  120.             { 61, 233 },
  121.             { 146, 235 },
  122.             { 123, 238 },
  123.             { 233, 239 },
  124.             { 238, 243 },
  125.             { 234, 247 },
  126.             { 240, 242 },
  127.             { 105, 243 },
  128.             { 235, 250 },
  129.             { 192, 220 },
  130.             { 256, 258 },
  131.             { 228, 259 },
  132.             { 214, 257 },
  133.             { 228, 260 },
  134.             { 220, 263 },
  135.             { 264, 266 },
  136.             { 265, 267 },
  137.             { 100, 239 },
  138.             { 228, 274 },
  139.             { 268, 273 },
  140.             { 276, 278 },
  141.             { 287, 294 },
  142.             { 288, 295 },
  143.             { 295, 302 },
  144.             { 298, 299 },
  145.             { 228, 304 },
  146.             { 300, 310 },
  147.             { 301, 311 },
  148.             { 294, 312 },
  149.             { 301, 302 },
  150.             { 288, 303 },
  151.             { 312, 321 },
  152.             { 302, 322 },
  153.             { 228, 325 },
  154.             { 321, 330 },
  155.             { 273, 292 },
  156.             { 328, 337 },
  157.             { 330, 338 },
  158.             { 302, 329 },
  159.             { 326, 336 },
  160.             { 329, 348 },
  161.             { 288, 349 },
  162.             { 333, 340 },
  163.             { 338, 368 },
  164.             { 351, 362 },
  165.             { 379, 389 },
  166.             { 378, 401 },
  167.             { 394, 395 },
  168.             { 329, 406 },
  169.             { 393, 404 },
  170.             { 235, 384 },
  171.             { 1, 417 },
  172.             { 400, 426 },
  173.             { 93, 427 },
  174.             { 420, 430 },
  175.             { 421, 432 },
  176.             { 295, 425 },
  177.             { 427, 436 },
  178.             { 435, 449 },
  179.             { 437, 451 },
  180.             { 417, 452 },
  181.             { 442, 444 },
  182.             { 443, 445 },
  183.             { 436, 462 },
  184.             { 396, 456 },
  185.             { 407, 462 },
  186.             { 451, 468 },
  187.             { 452, 469 },
  188.             { 463, 470 },
  189.             { 441, 464 },
  190.             { 468, 479 },
  191.             { 469, 480 },
  192.             { 480, 491 },
  193.             { 481, 482 },
  194.             { 487, 492 },
  195.             { 493, 499 },
  196.             { 382, 396 },
  197.             { 473, 495 },
  198.             { 329, 508 },
  199.             { 295, 329 },
  200.             { 473, 514 },
  201.             { 295, 509 },
  202.             { 1, 517 },
  203.             { 382, 526 },
  204.             { 338, 460 },
  205.             { 514, 540 },
  206.             { 528, 541 },
  207.             { 537, 548 },
  208.             { 526, 551 },
  209.             { 295, 546 },
  210.             { 540, 566 },
  211.             { 561, 562 },
  212.             { 295, 562 },
  213.             { 565, 574 },
  214.             { 473, 540 },
  215.             { 473, 568 },
  216.             { 295, 570 },
  217.             { 564, 574 },
  218.             { 575, 585 },
  219.             { 550, 587 },
  220.             { 586, 595 },
  221.             { 292, 551 },
  222.             { 295, 599 },
  223.             { 588, 597 },
  224.             { 599, 605 },
  225.             { 295, 600 },
  226.             { 611, 612 },
  227.             { 473, 613 },
  228.             { 295, 627 },
  229.             { 1, 628 },
  230.             { 617, 624 },
  231.             { 625, 636 },
  232.             { 338, 590 },
  233.             { 625, 626 },
  234.             { 578, 637 },
  235.             { 292, 641 },
  236.             { 637, 646 },
  237.             { 641, 652 },
  238.             { 651, 665 },
  239.             { 652, 666 },
  240.             { 654, 655 },
  241.             { 657, 668 },
  242.             { 646, 669 },
  243.             { 250, 356 },
  244.             { 664, 672 },
  245.             { 598, 675 },
  246.             { 295, 677 },
  247.             { 292, 682 },
  248.             { 666, 683 },
  249.             { 675, 686 },
  250.             { 655, 687 },
  251.             { 598, 676 },
  252.             { 100, 682 },
  253.             { 667, 693 },
  254.             { 653, 686 },
  255.             { 338, 407 },
  256.             { 292, 653 },
  257.             { 697, 710 },
  258.             { 698, 711 },
  259.             { 646, 701 },
  260.             { 600, 702 },
  261.             { 703, 715 },
  262.             { 702, 704 },
  263.             { 584, 720 },
  264.             { 707, 724 },
  265.             { 407, 715 },
  266.             { 338, 715 },
  267.             { 407, 703 },
  268.             { 491, 730 },
  269.             { 717, 731 },
  270.             { 1, 732 },
  271.             { 1, 720 },
  272.             { 725, 726 },
  273.             { 736, 737 },
  274.             { 698, 700 },
  275.             { 338, 751 },
  276.             { 742, 743 },
  277.             { 745, 755 },
  278.             { 646, 758 },
  279.             { 752, 754 },
  280.             { 732, 761 },
  281.             { 708, 745 },
  282.             { 1, 761 },
  283.             { 742, 768 },
  284.             { 703, 779 },
  285.             { 693, 706 },
  286.             { 706, 773 },
  287.             { 781, 791 },
  288.             { 783, 797 },
  289.             { 686, 801 },
  290.             { 778, 788 },
  291.             { 791, 806 },
  292.             { 793, 794 },
  293.             { 755, 812 },
  294.             { 801, 814 },
  295.             { 776, 817 },
  296.             { 711, 818 },
  297.             { 818, 828 },
  298.             { 751, 805 },
  299.             { 819, 820 },
  300.             { 806, 830 },
  301.             { 806, 822 },
  302.             { 703, 821 },
  303.             { 706, 823 },
  304.             { 827, 837 },
  305.             { 828, 838 },
  306.             { 804, 839 },
  307.             { 833, 842 },
  308.             { 824, 843 },
  309.             { 839, 846 },
  310.             { 676, 847 },
  311.             { 693, 834 },
  312.             { 706, 843 },
  313.             { 824, 844 },
  314.             { 646, 855 },
  315.             { 491, 855 },
  316.             { 683, 810 },
  317.             { 292, 814 },
  318.             { 864, 879 },
  319.             { 865, 880 },
  320.             { 874, 882 },
  321.             { 875, 883 },
  322.             { 872, 880 },
  323.             { 895, 904 },
  324.             { 847, 875 },
  325.             { 880, 900 },
  326.             { 902, 915 },
  327.             { 838, 916 },
  328.             { 909, 918 },
  329.             { 1, 921 },
  330.             { 706, 914 },
  331.             { 923, 924 },
  332.             { 927, 932 },
  333.             { 929, 930 },
  334.             { 646, 939 },
  335.             { 706, 942 },
  336.             { 943, 944 },
  337.             { 646, 954 },
  338.             { 950, 965 },
  339.             { 842, 966 },
  340.             { 875, 972 },
  341.             { 842, 977 },
  342.             { 969, 981 },
  343.             { 972, 983 },
  344.             { 842, 985 },
  345.             { 973, 984 },
  346.             { 988, 990 },
  347.             { 875, 890 },
  348.             { 890, 972 },
  349.             { 890, 1003 },
  350.             { 973, 1010 },
  351.             { 1008, 1016 },
  352.             { 1016, 1017 },
  353.             { 1008, 1027 },
  354.             { 693, 1026 },
  355.             { 1, 1033 },
  356.             { 810, 1034 },
  357.             { 1037, 1044 },
  358.             { 972, 1053 },
  359.             { 1039, 1058 },
  360.             { 1056, 1066 },
  361.             { 1056, 1058 },
  362.             { 1003, 1055 },
  363.             { 1059, 1060 },
  364.             { 693, 1067 },
  365.             { 693, 1077 },
  366.             { 641, 1085 },
  367.             { 693, 1078 },
  368.             { 1, 1090 },
  369.             { 693, 1091 },
  370.             { 810, 1085 },
  371.             { 641, 810 },
  372.             { 1081, 1094 },
  373.             { 1092, 1093 },
  374.             { 721, 761 },
  375.             { 1100, 1112 },
  376.             { 1105, 1106 },
  377.             { 883, 1119 },
  378.             { 1113, 1115 },
  379.             { 904, 916 },
  380.             { 1111, 1131 },
  381.             { 1133, 1141 },
  382.             { 1137, 1143 },
  383.             { 1135, 1148 },
  384.             { 1142, 1150 },
  385.             { 1143, 1151 },
  386.             { 292, 1137 },
  387.             { 1150, 1158 },
  388.             { 1151, 1159 },
  389.             { 1154, 1163 },
  390.             { 1159, 1168 },
  391.             { 1160, 1169 },
  392.             { 1163, 1171 },
  393.             { 1170, 1174 },
  394.             { 1171, 1175 },
  395.             { 1173, 1178 },
  396.             { 1180, 1182 },
  397.             { 1, 1191 },
  398.             { 1184, 1194 },
  399.             { 1137, 1197 },
  400.             { 1186, 1187 },
  401.             { 1195, 1205 },
  402.             { 1199, 1214 },
  403.             { 1205, 1218 },
  404.             { 1207, 1219 },
  405.             { 1207, 1208 },
  406.             { 1180, 1231 },
  407.             { 1, 1219 },
  408.             { 1137, 1220 },
  409.             { 1221, 1232 },
  410.             { 1227, 1234 },
  411.             { 972, 1055 },
  412.             { 972, 1220 },
  413.             { 1214, 1233 },
  414.             { 1225, 1236 },
  415.             { 1208, 1236 },
  416.             { 646, 1225 },
  417.             { 1239, 1241 },
  418.             { 1191, 1243 },
  419.             { 1, 1243 },
  420.             { 1244, 1246 },
  421.             { 1243, 1247 },
  422.             { 1, 1247 },
  423.             { 1248, 1250 },
  424.             { 1252, 1254 },
  425.             { 1247, 1255 },
  426.             { 1, 1255 },
  427.             { 1259, 1260 },
  428.             { 1261, 1263 },
  429.             { 1262, 1264 },
  430.             { 1260, 1269 },
  431.             { 1265, 1272 },
  432.             { 1265, 1266 },
  433.             { 1266, 1267 },
  434.             { 1268, 1273 },
  435.             { 1264, 1270 },
  436.             { 1264, 1272 },
  437.             { 1273, 1280 },
  438.             { 1276, 1277 },
  439.             { 1269, 1275 },
  440.             { 1270, 1275 },
  441.             { 1270, 1282 },
  442.             { 1279, 1283 },
  443.             { 1225, 1287 },
  444.             { 1275, 1290 },
  445.             { 1286, 1292 },
  446.             { 1286, 1287 },
  447.             { 1272, 1288 },
  448.             { 1225, 1294 },
  449.             { 1285, 1289 },
  450.             { 1208, 1292 },
  451.             { 1287, 1294 },
  452.             { 1, 1295 } };
  453. } MATCHES;
  454.  
  455.  
  456.  
  457. int partition(MATCHES **data, int left, int right, int pivot, int col){
  458.         int temp;
  459.         int i;
  460.         int storeIndex = left;
  461.         int pivotVal = (**data).values[pivot][col];
  462.         (**data).values[pivot][col] = (**data).values[right][col];
  463.         (**data).values[right][col] = pivotVal;
  464.  
  465.         for(i = left; i < right; i++){
  466.             if ((**data).values[i][col] >= pivotVal){ //Change this to greater then and BOOM we're done
  467.                 temp = (**data).values[i][col];
  468.                 (**data).values[i][col] = (**data).values[storeIndex][col];
  469.                 (**data).values[storeIndex][col] = temp;
  470.                 storeIndex++;
  471.             }
  472.         }
  473.         temp = (**data).values[storeIndex][col];
  474.         (**data).values[storeIndex][col] = (**data).values[right][col];
  475.         (**data).values[right][col] = temp;
  476.         return storeIndex;
  477.     }
  478.  
  479. void quickSort(MATCHES **vec, int left, int right, int col) {
  480.     int r;
  481.       if (right > left) {
  482.         r = partition(vec, left, right, right+1/2, col);
  483.         quickSort(vec, left, r - 1, col);
  484.         quickSort(vec, r + 1, right, col);
  485.       }
  486.     }
  487.  
  488. void sorter(MATCHES *table) {
  489.     quickSort(&table, 0, (*table).size-1, 0);
  490.     quickSort(&table, 0, (*table).size-1, 1);
  491. }
  492.  
  493.  
  494. int main () {
  495.     MATCHES table;
  496.     int i;
  497.  
  498.     printf("Unsorted\n");
  499.     for (i=0; i<table.size; i++)
  500.         printf("%d %d\n",table.values[i][0],table.values[i][1]);
  501.     sorter(&table);
  502.     printf("Sorted\n");
  503.     for (i=0; i<table.size; i++)
  504.         printf("%d %d\n",table.values[i][0],table.values[i][1]);
  505.     return 0;
  506. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement