Problem Statement
We have a sorting machine that works on a list of distinct numbers. This machine only has one instruction named MOVE that takes one element of the list as a parameter. The MOVE instruction removes the element from the list and then appends it to the end of the remaining list.
For example, the sequence {19,7,8,25} can be sorted in ascending order using 2 instructions:
MOVE 19, to get {7,8,25,19}
MOVE 25, to get {7,8,19,25}
You will be given a
Definition
- Class:
- SortMachine
- Method:
- countMoves
- Parameters:
- int[]
- Returns:
- int
- Method signature:
- int countMoves(int[] a)
- (be sure your method is public)
Constraints
- a will have between 1 and 50 elements, inclusive.
- Each element of a will be between -1000 and 1000, inclusive.
- All elements of a will be distinct.
Examples
{19,7,8,25}
Returns: 2
The example from the problem statement.
{1,2,3,4,5}
Returns: 0
This list is already sorted, so no instructions are needed.
{1000,-1000,0}
Returns: 1
This list can be sorted with a single instruction: MOVE 1000.
{2,1,3,4,5,6,7,8,9}
Returns: 8
{4,5,1,6,7,2,8,9,3,10,11}
Returns: 8
{1,3,4,5,6,7,8,9,2}
Returns: 7
{10,11,12,1,3,4,5,6,7,8,9,2}
Returns: 10
{-6, 5, 1, -8, 2}
Returns: 4
{-2, -8, 9, 0}
Returns: 3
{731, 87, 48, 660, 57, 784, -613, -680, -207, -454, 589, 67, 136}
Returns: 12
{988, 54, -2, 128, 353, 429, 638, 123, -369, 127, 334, -543, 465, -177, 892, 386}
Returns: 15
{377, -492, -739, -771, 313, 741, 382, -407, 105, 883, -352, 268}
Returns: 11
{269, 214, -460, -438, 488, 665, 854, 887, -255, -688, -766, -879, -518, 374, 17, -49, 642, -837, -555, 880, 267, 200, -117, -495, 635, -659, -37, -332, -945, -632, -968, -612, 18, 678, 146, -725, 866, -748, 276, -892, -970, 157, -215, -717, 260, -314}
Returns: 45
{106, 307, -682, -482, 877, -650, 705, 845, 787, -402, 988, -762, 795, 973, -409, -107, 623, -10, -300, -659, 644, 262, 878, 754, -279, 972, 18, -686, 703, 255, 341, -623, 163, -621, -987, 480, -632}
Returns: 36
{-39, -198, 649, 663, -443, 907, 81}
Returns: 6
{471, 252, -192, 888, 100, -727, -254, -870, 74, -904, 770, -650, 934, -180, 518, -892, -454, -721, -369, -612, -780, -832, 367, -643, 933, -50, -631, -315, 2, 800, 677, 853, -761, -875, 635, 964, 449, -281, -776, 960, 552, 472, -107, 28, 368}
Returns: 42
{268, 431, -291, 446, -94, -576, 318, 327, -131, 853, -733, 136, 108, -823, -994, -577, 440, -439, 605, 937, -34, 384, 778, 173, 791, -136, -781, -353, -867, 618, 874, 171, 864, -705}
Returns: 32
{-233, -87, 74, 416, -718, 468, -294, 712, -349, -752, -734, -69, 433, -939}
Returns: 13
{711, 739, -956, 917, -566, -152, 194, 222, 12, 405, -290, -728, -998, 306, 974, 768, 250, -841, -827, 586, -511, 495, -626, -817, 960, 627, -164, -264, 70, 752, -883, -300, -694, -851, -786, -638, 880, -779, -610, 459, -861}
Returns: 40
{-916, -470, 686, -399, 343, 372, 167, 703, 229, 216, -773, 610, 584, 368, 518, 91, 228, -313, -444, 690, 62, -147, 436, 570, 212, 700, 60, -720}
Returns: 25
{-771, 392, -52, 930, -51, -789, 94, 695, -37, -772, -956, 691, 559, 226, -940, -728}
Returns: 14
{460, 52, 149, 895, -217, 946, -41, 482, 260, -723, -153, 674, 892, 201, 565, 321, 619, 497, 159, 142, -743, 813, 860, 600, -554, -477, -63, 898, -868, -473}
Returns: 29
{-43, 528}
Returns: 0
{-889, -295, 581, -251, -195, -337}
Returns: 4
{195, 462, 545, 141, -225, 611, 454, 772, -714, 403, -641, -940, 436, -86, -401, -497, 211, -120, 964, 680, -466, -885, 894}
Returns: 21
{-628, 789, 508, 140, -762, 39, 192, 714, 869, 755, 950, -66}
Returns: 11
{-957, 531, -279, -179, 461, -482, -259, 249, 704, -530}
Returns: 8
{258, 137, -338, -591, -793, -404, 636, 424, 238, 85, -394, 707, 506, 919, -150, -175, -313, -51, -540, -787, -56, -234, 902, 951, -603, -141, 986, -783, -510, 276, -738, -906}
Returns: 31
{619, 98, -825, 184, 253, -168, -723, -640, 381, -866, -534, 998, 434, -182, 839, -34, -916, -515, -858, 316, -155, 285, -639}
Returns: 22
{292, -76, 379, 996, -655, 11, 780, 752, 56, 333, -566, -333, 471, -494, -668, -430, -760, -662, -577, 159, -600, -212, 598, 938, -1, 429, 817, 535, 485, 264, -810, -970, 814, -269, -364, 798}
Returns: 35
{157, 115, 400, 623, 234, -455, 421, -178, -378, -164, 906, 73, -624, -967, 742, 551, 995, 581, 397, -560, -151, 687, -476}
Returns: 22
{114, -205, -753, -852, -190, 611, 911, -195, -944, -895, 403, -603, -393, 86, -98, -628, -516, 679, 457, 945, -632, -185, -90, -976, 399, -1, -871, 176, -228, 279}
Returns: 29
{488, -796, 788, -607, -797, -227, 648, 279, -118, -425, 520, -935, 555, -480, -277, 6, -229, 980, 634, 139, -239, -390, 958, -414, -930, -994, 18, -553, -743, -783, -352, 823, -708, 828, 372, -851, 898, -580, -202, 263, 80}
Returns: 40
{710, 24, 650, 487, -7, -269, -884, -337, -111, -174, 170, 618, -559, 355, 377, 677, -756, -718, -945, 670, -893, -75, -866, 60, -757}
Returns: 23
{653, 368, -695, 727, 350, -480, -182, 956, 840, -618, 522, 435, -615, 14, -163, -946, 942, -121, 498, -502, 384, -265, 545, 822, -338, 92}
Returns: 25
{336, 596, 170, -971}
Returns: 3
{429, -990, -565, 873, 736, 898, -464, 355, -686, 104, 157, 263, -254, 972, 249, 546, 743, 990, -853, -732, 693, -716, 692, -166, 741, -468, 211, -353, -812, -306, 511, -975, -360, 697, 146, 32, 711}
Returns: 35
{483, -426, -6, -353, -337, 37, -453, 758, -258, 971, 161, -934, 502, -499, -134, -111, 456, 859, 732, -919, 578, -505, -36, 96, -498, -288, 940, -112, 881, 76, -444, 239, 661, -621, 990, -526, -583, 311, -469, -15, 489, -483, 448}
Returns: 39
{-394, -646, -989, 959, 620, 631, -254, -819, -922, 919, 302}
Returns: 9
{-827, 292, -3, -225, 982, 680, -126, -258, 447, -461, 8, 952, 454, -311, -848, -841, -217, 160, -24, 15, 255, 502, -907, 943, 907, 500, 914, 289, -533, 719, 302, -2, -634, -518, 934, -585, 562, -246, -531, 654, -915, -845, -275, -345, -365, 735, -975}
Returns: 46
{976, -946, -824, 680, -644, -95, 128, -892, 816, -263, -592, -669, 887, 447, -653, -759, 572, 171, 635, 98, -904, 78, 143, -416, -40, -846, 784, -702, -738, -858, 582, 603, -535, 529, 84, -964, 934, 36, 783}
Returns: 38
{44, 286, -49, -246, -378, 403, 511, 299, 18, 868, 938, 824, -403, 416, -697, -157, -652, -72, -132, 512, -290, 74, -707, -948, -812, 426, 806, 757, 118, 884, 292, -765, 363, 855, -460}
Returns: 32
{-875, 489, 452, 897, 199, -428, 809, 752, -395, -272, -618, 172, -483, 276, -380, -79, -602, -43, 679, 471, -960, 245, 605, 25, -771, 325, -98, -742, -20, 876, 640, -597, 908, -831, -836, -871, -54, -925, -939, -560, -662, 773, -393, -247, 202, 833}
Returns: 44
{307, -452, -97, -811, -831, -420, 669, -990, -64, 40, 840, -380, -206, -183, 282, -888, -748, -30, -121, 140, -717, 208, 631, 950, -248, 997, -407, -773, -267, 994, -896, -942, 504, 377, -331, -676, -552, 750}
Returns: 36
{295, 916, -419, 716, -139, 140, -735, 299, -625, 120, -596, -969, 259, -506, 956, -844, -937, 875, 607, 182, 448, -988, 793, -884, -82, 405, -318, -87, -90, -615, 260, -748, 224, 323, 868, 215, -467, 88, -331, -561}
Returns: 39
{-340, 659, 183, 935, 517, 902}
Returns: 3
{158, 497, -55, -581, 228, -193, 710, 704, -963, 750, 830, 466, -425, -15, 834, -478, -737, -754, -499, 231, 885, 344, -135, 424, -139, -646, -832}
Returns: 25
{318, -657, 375, -622, 959, -196, -207, 456, -506, -128, -888, 991, -350, -591, -895, -486, -847, 146, -414, -405, 874, 414, -158, 166, 478, 269, 599, -238, 334, 383, -360, -464, -41, -826, 568, -495, -855, 778, -963, 433, -260, -391}
Returns: 41
{833, -554, 23, -967, -114}
Returns: 4
{-990,-950,-939,-931,-916,-892,-825,-787,-652,-649,-607,-552,-544,-543,-514,-388,-319,-304,-233,-176,-158,-89,-55,5,24,57,58,75,175,177,187,205,240,260,276,312,484,499,594,612,618,680,715,750,822,930,933,985,990,999}
Returns: 0
{934,917,847,819,805,804,720,664,620,592,562,498,475,462,393,340,319,305,251,237,226,216,202,118,78,65,16,-22,-43,-96,-113,-119,-264,-267,-298,-340,-341,-495,-593,-643,-650,-693,-706,-716,-731,-805,-815,-938,-952,-994}
Returns: 49
{982,-993,-872,-855,-840,-798,-743,-728,-686,-667,-642,-637,-629,-562,-446,-379,-375,-368,-363,-320,-284,-272,-192,-136,-111,-100,-95,-89,-49,5,27,43,64,286,398,536,546,568,634,758,763,785,796,812,897,898,925,961,964,-1000}
Returns: 49
{-745,-706,269,-279,990,-734,690,473,-278,-546,970,586,-499,-994,-580,588,-157,349,-228,435,950,-806,385,359,-939,-597,-576,153,274,-714,809,759,78,891,755,-915,170,134,87,-878,250,-134,-301,-96,115,-548,-865,651,788,218}
Returns: 45
{-223,-499,-550,-486,421,-609,-36,-985,345,-948,-63,713,-992,-838,-193,613,-882,968,-428,933,-237,125,49,765,215,-615,-880}
Returns: 26
{-510,788,-434,-629,-653,-725,-997,436,-258,776,-968,476,397,541,-75,91,681,823,-999,591,576,-851,-802,-783,559,721,-543,-68,157,729,122,-52,539,-460,-506,-298,-706,871,780,-299,133}
Returns: 40
{-102,254,898}
Returns: 0
{391,-273,637,134,-707,-461,-539,-706,862,448,889,-743,-39,43,-274,-678,935,-711,-620,496,164,-892,257,314,-422,368,-332,-198,-408,-358,376,500,-843,259}
Returns: 32
{437,-605,216,22,747,-626,918,219,455,-307,967,-218,-711,-520,668,823,-49,870,287,-772,-132,324,-601,521,-640,-473}
Returns: 25
{67,271,-453,138,402,969,2,-265,884,842,212,-458,-543,839,-798,499,-80,-821,-269}
Returns: 18
{-923,253,445,-308,892,446,-960,-304,521,-793,-669,460,-776,-297,831,791,-376,-735,-624,301,203,2,-900,-195,-425,-221,-714,135,714,-38,665,-218,5,672,-350,-722,-639,299,-92,731,17,-528,600}
Returns: 42
{441,-382,-743,-65,-29,-774,-453,-922,-813,969,-619,755,-565,482}
Returns: 12
{311,129,102,-18,-152,-558,-874,-709}
Returns: 6
{315,312,698,30,-702,156,420,-319,-467,-481,306,-457,-581,313,-205,912,-720,-326,977,443,77,-161,794,670,-957,-218,332,-736,292,-33,-782,-327,803}
Returns: 31
{356,-824}
Returns: 1
{67,758,-693,333,-59,-583,-368,841,-589,-643,-967,-579,-876,910,967,500,-873,490,-67,257,461,882,730,-859,255,229,-187,736}
Returns: 24
{-968,-567,-621}
Returns: 1
{308,-106,-939,-179,-420,906,-192,801,589,-436,-38,378,622,110,-798,-113,-214,-320,633,313,548,298,572,-654,-506,885,-94,-356}
Returns: 24
{250,-225,251,142,264,-837,847,196,587,568}
Returns: 9
{589,-145,718,-174,652,619,422,699,-397,-147,-288,365,478,-268,425,-903,75,420,731,-772,317,-532,-17,-614,801,613,-599,-738,-6,442,-68,626,314,-487,780,970,653,510,-81,-727,-308,-908}
Returns: 41
{575,-43,-159,-289,-211,346,290,-256,678,760,70,-477,62,-462,-216}
Returns: 13
{-328,-37,-593,650,-738,524,-807,-855,304,867,-466,-620,-799,-291,539,814,-251,493,781,-9,-901,-908,-868,480,-158,233,-590,141,206,463,259,-747,221,145,816,-15,-503,-198,126,230,704,310,-299,353}
Returns: 43
{869,424,471,-262,402,767,526,-656,345,-264,705,25,-714,-431,920,-602,-318,60,-436,-801,-449,905}
Returns: 21
{-605,-662,43,-793,842,529,697,-846,-328,-131,280,13,-466}
Returns: 12
{10,-476,-122,-125,566,481,-368,-346,517,323,810,32,-801,447,-387,571,-150,376,72,-48,-40,-66,-683,375,-147}
Returns: 23
{687,686,-984,619,-909,811,755,-428,-961,-243,928,-155,395,-952,-734,-358,-185,-87,-167}
Returns: 16
{722,346,-297,-926,-873,-615,240,-11,422,-919,-938,31,901,-434,141,-630,476,621,743,641,325,-753,573,-511,-894,-968,710,-942,894,-153,-891,730,-39,257,-319}
Returns: 33
{-901,677,546,211,-911,-698}
Returns: 5
{-874,847,-478,786,814,861,656,-695,983,168,284,-979,-253,676,-142,398,647,-483,451,226,-484,-168,859,715,866,102,-586,-624,-661,762,-213,-793,267,758,-592,-680,336,-830,-540}
Returns: 38
{378,-564,-100,-727,-243,178,-212,-482,314,-642,326,423,-58,171,611,525,-248,-164,342,224,655,954,603,-743,646,622,775,-405,569,816,-40,297,-262,991,-930,772,739,105,161,-583,26,8,485,-850,707,-352,-434}
Returns: 45
{-932,767,223,505,697,381,458,335,-836,540,-817,757,-400,-747,422,-77,-652,488,878,-342,-724,-806,234,-573,764,-313,-769,-160,760,-580,380,-291,307,-799,582,-823,300,653,167,111}
Returns: 37
{-829,-669,468,545,-456,558,366,540,942,-922,-371,-949,-221,937,-265,-927,-720,-24,515,404,500,-326,-548,494,-84,180,-20,266}
Returns: 26
{-274,581,733,60,-871,1,869,-734,-702,8,770,-298,553,-268,870,-76,-209,432,913,364,798,889,-502,343}
Returns: 20
{1, 3, 4, 5, 6, 7, 8, 9, 2 }
Returns: 7
{-2, -8, 9, 0 }
Returns: 3
{976, -946, -824, 680, -644, -95, 128, -892, 816, -263, -592, -669, 887, 447, -653, -759, 572, 171, 635, 98, -904, 78, 143, -416, -40, -846, 784, -702, -738, -858, 582, 603, -535, 529, 84, -964, 934, 36, 783 }
Returns: 38
{5, 1, 2, 3, 4 }
Returns: 1
{5 }
Returns: 0
{976, -946, -824, 680, -644, -95, 128, 129, 816, -263, -592, -669, 887, 447, -653, -759, 572, 171, 635, 98, -904, 78, 143, -416, -40, -846, 784, -702, -738, -858, 582, 603, -535, 529, 84, -964, 934, 36, 783 }
Returns: 38
{180, 20, -270, 480, -110, 100, -10, -330, 260, -130, -30, -170, 360, -430, -450, -150, 380, -490, 460, -350, 160, 440, -230, -290, -410, 60, -210, -50, 400, -90, -370, 120, 340, 200, -310, -190, 240, 220, -470, 320, 300, -250, 140, 0, -70, 280, -390, 420, 80, 40 }
Returns: 48
{-2, -1, -10, 5 }
Returns: 3
{10, 2, 4, 7, -11, -101, 9, 8, 6, 999, 998, 997, -999, -998, -997, 123, 124, 125, -123, -122, -111 }
Returns: 15
{976, -946, -824, 680, -644, -95, 128, -892, 816, -263, -592, -669, 887, 447, -653, -759, 572, 171, 635, 98, -904, 78, 143, -416, -40, -846, 784, -702, -738, -858, 582, 603, -535, 529, 84, -964, 934, 36, 783, 53 }
Returns: 39
{4, 7, 1, 2, 3, 5 }
Returns: 3
{-2, -8, 9, 0, 443, -33, 67, 22 }
Returns: 7
{1, 2, 3, 4, 5 }
Returns: 0
{976, -94, -82, 68, -644, -95, 128, -892, 216, 263, -592, -669, 887, 447, -653, 759, 57, 171, 635, 98, -904, 78, 14, 416, -40, -846, 784, -702, -738, -858, 582, 603, -535, 529, 84, -964, 934, 36, 783 }
Returns: 38
{976, -94, -2, 68, -644, -95, 128, -892, 216, 263, -592, -669, 887, 447, -653, 759, 57, 171, 635, 98, -904, 78, 14, 416, -40, -846, 784, -702, -738, -858, 582, 603, -535, 529, 84, -964, 934, 36, 783, 123, 432, 0, -11, -21 }
Returns: 43
{1, 50, 2, 49, 3, 48, 4, 47, 5, 46, 6, 45, 7, 44, 8, 43, 9, 42, 10, 41 }
Returns: 9
{10, 9, 8, 7, 6, 5, 4, 3, 2, 1 }
Returns: 9
{-1, 2, 3, 4, 5, -5, -6, -3, -2, 100, 101, 99, -1000, -999 }
Returns: 12
{1, 2, 6, 9, 3, 4, 5 }
Returns: 2
{15, 4, 88, 6, 999, 65, 33 }
Returns: 5
{7, 8, 9, 2 }
Returns: 3
{1, 2, 40, 30, 50 }
Returns: 2
{2, 4, 56, 54, 53, 3, 57, 58, 59, 1, 21, 22, 23, 20, 100 }
Returns: 14
{2, 4, 3, 1 }
Returns: 3
{1, 4, 5, 6, 7, 8, 3, 2, 9 }
Returns: 7