From 5749e6576954efd7b0d573835352d0df03de7ae2 Mon Sep 17 00:00:00 2001 From: Beryl Hoffman Date: Fri, 27 Dec 2024 13:39:47 -0500 Subject: [PATCH] 6-4 array algorithms: adding content from CSAwesome2 --- _sources/Unit6-Arrays/Figures/swap.png | Bin 0 -> 115123 bytes .../topic-6-4-array-algorithms.rst | 696 +++++++++++++++++- 2 files changed, 687 insertions(+), 9 deletions(-) create mode 100644 _sources/Unit6-Arrays/Figures/swap.png diff --git a/_sources/Unit6-Arrays/Figures/swap.png b/_sources/Unit6-Arrays/Figures/swap.png new file mode 100644 index 0000000000000000000000000000000000000000..36182d02d42716409b05c6c60f2489188ebf14a0 GIT binary patch literal 115123 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ЛSxOm_O3v-)bg_)%w^p*;~b7#zRoFnnSDKC__Uq>B>I8tc;B!d#e z8!a>ZvI=0y;Z;uc_6dW)6oFG#1{hgxXhA7%hMy8~HX{2-6TgZpISl!jryH1FNc@X3 z3$qSnnnvz)9LsbN?3Qk?Jg0SZ9;V}E+AsE-epdY5b_qS6{%E!9nCn^amZznLzI6m5 zp69q5i>4!RUR1kmu!|;Ep_DJ})!999Y(* z0gXnD{KUB3xIM7V?g{Dr8N0jQv-|gZwzXZgJNK$~?Pkqx-u9woOfLB()@*9!QBgnC z;k8$*cKJyz2XWs@TXCxXqSo2^P&6nqEXY0Fdm)fDV}gz(XJJI2tEz7O0sS^6woJg2 zNS@pqL?X_qW0rTGi1Euc&tYZCm=%_3FDw%0xWV~S;*XDVYKI>oCU$mo^@l#X>7Zu% zP{~mTF*%;d<1&`UHojR%Flk6BOT=m#f-$!IMYjs{`*P`rGR`ng@M}oUyo9;gYH0+P z5yDfy)QfSBdZ-`x_c}F}_qmM6)~(9&Pc%>>_i`<1G124|5n4&hc(EnXiWU}YGOpH6 zo2{Xr(CN z{LMZb*=52A6#o=P?&Dw*v+|rS zb2r*=d}zOEGRkgHJ|FWtr6Db6?hcvYGfojMPbTuXi5%`ofn_Qp1VS5vCXpiQz@W*v ziLPjf)_Q|iC~VkEFPyXIpIP(Q3b_g?ZjFzg%gEyL`PR1CPk#21eemhJwR=k%$o(s9 z)*mj}XJ2gES6`2`C{a?SL;L`lGw5!)6TLAde>#G!MIl z?T#X6XELAo;j0kAr<`k+2=a?v?g-D^%regBAg7&$X&u=Q9whB?0ep(FRT@ciMDVoO zCFDF2h8X?CjT6RYxr-erQHIBrCm(FCi5Tt~`~4m$BI?L4DZ5sjds?~4r_Z8>D4M(C zs|_2!^R8)25>gGsBtG_6idmzPGjHo`B`-gqadwj1Dqe_|SpWSqJ z$D;jOXlVt+jvq4NJVo-7_J(ypPD}8;2YZIPYiSxOONQSTJ3J%|}Vs$!~-U z$rJGKLEWTa-XZ&4byN-NS|v9|cdS|YTAlC%>$gAFGW>JdT{5t|r=u8JTKj!hEh*!Q zi2JlqQdSF!!xJN2#oxMSTlYS+QRgG&cT*{~3YP)rmqB0*mkzOOGD|S@e3#0%)SS`~ zBRBDN0Qp!TIJ+xKX(BcrA~!0NkyW}}Smc<}(J6M*vxDg1yflZI*M2}A2cg44o}9~I znoub&1{TW0w1erzN=WfSKb`n&Bj-F6i=c6&ozW$G^ucu^<(Yv~|u*YDr9`&+!a@w8Us=e06FCBK{Y#aA6} z^>72u%@YRs-hcy+tMY1>PCdL}~M`EDy z)FQiJA>xr;x^ThX{N8u%jURm9zV}CeXg~PVKe5+jWWD?cf6HF_y&u|3-}|0@=LbKq z@5&JS{vZ93U3%d;tDaak<1<>S3%hU1Tvg&OU*53JE-_b4YSxr7#YGRw0o;p)F~!bW zqt>v7-}@qMO?rTF*rBhge-qF93`B=hdx*_j+#Blmb@l6({FcBA?UTjXyjf??kS2A_e)RC7ML$*@C=F=_A*i zDV>kYh3XJFg2%u;mg6iORi~Jze`RDnT_orCG@Sll)9+aOtPV{TJwo z^g=~D%0^barzZR-foG=OKt33CqHJh61w03xdiT`?#EvdQyp1;Pj<=KyF^N=JF+L_g3u3fAgVz^y#MG=H!=clx@AL zL0-DMk7XV7V#nuZ)wM% z>WR7#O19jx7H@uU#tte^Z}he|ZPeY?LOZ@Eh~z8m%5?fxliVB9f#rtM@dTp`qqWng zWPC{R(=fSt|Gr(jaosk$ZQD?O_f)SN+a0?m!{v6jXLmXsyVu^fd!4r3SNMjEx=qFD zsVwT}El{N~l<0~v_N(o3)9qsCPH|*#`Q=TF6@?AEGN!mW9fMH8j0xO~&TU&gwS`Nl zZiLbn8Ce6>Wxyw*R2S=YtffA?CZlO(sCirU-MDefI_q4)Q3j_@+RFK}wsJ-bB<>kg zeRx5zm)DnpCf+vG-#Ky9alcxD{J(F|3Z$=P}4k;jCv**y`(WKWy~kHXJGK$@+vuPcMLHML4^ z+Ffg}zi*w*UrF&kQ|LW0pA`-7_K?9L1*z9h*y_or?8K=nwzP6ysaa*K8ESWB*b`~# z&W-Y;udToNzHQ6cs>tZ7%g91MUCFuJKpIa6Pvq~D4CGxTi1YE;1giqsXLd+InXj3* z?m_!87`P^nk;S=qL9hsvjV$EO`8?g&FS0IWDq}DIU z|AswvaU_H2vVW)7uCTwTR4CTH&h!Az+?bIO>9gn7%={+{0(#Z%l7 zH+Hh5i=JK@i@_n~!N_VW&IX1}qh^g0E3p#=54#;(zjMp_GPIU?F=?w6)LgO?&1GAv z)UA??3k;S8WG1QCX=vQ0|uK5a+DZ35VF7bJ>d#GG8>8#aPXR1TWCi zf%5gI|2!am8AsS1WA~}4GEX$?cB-{xOUkQz>#p7W>+`|VV43d14B7X5JB;(2_c2>gDp4=%=lt7N1&yNBslZuKO zm2DYVw`Iv+wQBz>+r0aMbvM6IoOKcRQ*nb|OSaKDb%GbHw)BRro%>^1^*>SveM7By zN-Kraq7_XjOcty~xB>FMRtjIq$ofFm{%2C=&uyuGOKNsk<+i0j@Pew)&eSz0SlqP(c*l}wRnliG=c{B0P`cnEd9#q%Bygai1qGb^8FzR!dm{p&0 zyBJJ%@>${f$AI77){2vbq16>%f`gQ%$aXC11U!H1+I)ZF)0U5{9MVt|A{BUg!^ z>LeIhc_*vPZVqm&h?tSWaN&L>Ua3>jLV3w}m4ho@r(^f8UAKWO|JJrg?t^4ICR=;z@PItEK zY-d}?Z95}fUf#TCgIm|_-j`q4U~|h>WyIChK)wvf&FmOKe7dHuc48#PPEhQmjz(PM z(^#S6^M(d+gM=|eX*-I?Ggi#JZv4ovGz)tNYKd3PZPjH%ZIrQhTJHL-Tek7(C-&8c zAKLc4JJzMMojGM^pS@y@v!`uaTpzN7#@z0Gf?Q((;#Cw;C!UDxbGb0K-%C(@Me?*n zUI0g7XwB*~v}R9`@UT1FZuv23^A~R7WuTc4^*H&u&GDW_&OH?o?l>uDL`uh@w*KeVNje_-_! ze_++6?^vbvyas>^YQ?JJ^4T1sz-yO>mr`K$(Rz`KJguj)G%|l85s0`)o>=3(Kid@ZByKW}Q0-&B8(a zrzvAr*lrY^e{q_X$8NM6$S>aMvr~4AQycfUePWN7U?zD?7+Svjs=TTd_2c2XEiG-?#fuGl_2rtKJEJv4PqoBmRD0OTg1)}iv-f^` z%eJ~_?9;Dm_Vc%|ndUI-^MwUX8a$26hivISPixM4@yfD2^@RG}fNzI(t=ZH9MhgPq zbBVi-5CwnXH;sTe}nWn5cxJ&tH_FGtLgj9_sKI0(v+$w8VHf>ZJpji5yA{ z9q?6zempVmUI;|~9!nud!l3=SX-9=mp^~o-v7sc zX&;HM{`F7n+RuM!@Bigr+U<`%w5ALQc7Vvatvt77z?{DFoIUe{ADUfwQiZ9H-ne03 z|MYL{{eSY0?6aTz*lxW23%m2{ckK4Nzq0FZ|J*+P$v?68{_=mcTR-`0yY=N)R#OM5 z$uO#Mmz45z5(cXONNuh+>Q<{arGHw6#PvU~E6r~<<8xK)cz5|!g7kExMaxhfu%R?f z<%MBcJfV#4Ns+g2-?kecd|+39@k_h*leg^4pZ>%?`J2DCuYUDQ>wTsT22MPA&Oh0YgaTq16u=jM4|A*zn>pClj*Mtq>fFl$^qC}xet_|eN3 zM$zCy!a{i!91O}kS!HJWq)um%0Af-XxzWHsKO(mzgawLx5KvTI9jyV$KCkqyS%32b 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 Qv;Y7A07*qoM6N<$f>zN1ga7~l literal 0 HcmV?d00001 diff --git a/_sources/Unit6-Arrays/topic-6-4-array-algorithms.rst b/_sources/Unit6-Arrays/topic-6-4-array-algorithms.rst index 2864f885..44bceb5c 100644 --- a/_sources/Unit6-Arrays/topic-6-4-array-algorithms.rst +++ b/_sources/Unit6-Arrays/topic-6-4-array-algorithms.rst @@ -15,7 +15,7 @@ Array Algorithms (FRQs) pair: array; algorithms pair: array; FRQ -In this lesson, you will study different Free Response Questions and responses that develop algorithms using arrays. +In this lesson, you will study common algorithms using arrays and loops and practice FRQ (Free Response Question) problems. Here are some common algorithms that you should be familiar with for the AP CSA exam: @@ -31,7 +31,126 @@ Here are some common algorithms that you should be familiar with for the AP CSA - Shift or rotate elements left or right - Reverse the order of the elements -Here are two common array traversal loops that can be used for these algorithms: +Accumulator Pattern for Sum/Average +------------------------------------ + +The **accumulator pattern** is an algorithm that iterates through a set of values using a loop and updates an accumulator variable with those values, for example to compute a sum or average of a set of values. The accumulator pattern has 4 steps: + +1. Initialize the accumulator variable before the loop. +2. Loop through the values. +3. Update the accumulator variable inside the loop. +4. Print or use the accumulated value when the loop is done. + +With arrays, the accumulator pattern is used to compute the sum or average of the elements in the array. The sum is the total of all the elements in the array, and the average is the sum divided by the number of elements in the array. + +For example, + +.. code-block:: java + + int[] values = {6, 2, 1, 7, 12, 5}; + double sum = 0; + for (int val : values) + { + sum += val; + } + double average = sum / values.length; + System.out.println("Average is " + average); + + +.. |Java visualizer| raw:: html + + Java visualizer + + +Here is an object-oriented example that has the array as a private instance variable in the class and provides public methods sum and average that use enhanced for loops. You can use the |Java Visualizer| or the Code Lens button to step through this code. + +|CodingEx| **Coding Exercise** + +.. activecode:: enhanced-for-loop-avg + :language: java + :autograde: unittest + :practice: T + + Try the code below that computes the average of the elements in the array. Can you add another method to compute the sum of the elements? + ~~~~ + public class ArrayWorker + { + private int[] values; + + public ArrayWorker(int[] theValues) + { + values = theValues; + } + + public double getSum() + { + // TODO: Write a loop that computes and returns + // the sum of the elements in the array + + + } + public double getAverage() + { + double total = 0; + for (int val : values) + { + total = total + val; + } + return total / values.length; + } + + public static void main(String[] args) + { + int[] numArray = {2, 6, 7, 12, 5}; + ArrayWorker aWorker = new ArrayWorker(numArray); + System.out.println(aWorker.getAverage()); + System.out.println(aWorker.getSum()); + } + } + ==== + import static org.junit.Assert.*; + + import org.junit.*; + + import java.io.*; + + public class RunestoneTests extends CodeTestHelper + { + public RunestoneTests() + { + super("ArrayWorker"); + } + + @Test + public void test1() + { + String output = getMethodOutput("main"); + String expect = "6.4\n32.0\n"; + + boolean passed = getResults(expect, output, "Output from main"); + assertTrue(passed); + } + @Test + public void testFor() + { + String code = getCode(); + + int fors = countOccurences(code, "for"); + + boolean passed = + getResults( + "2 for loops", fors + " for loops", "for loop used in getSum"); + assertTrue(passed); + } + } + + + +Min, Max, Search Algorithms +------------------------------- + +In the last lesson, you wrote a spell check algorithm which searched for a word in an array of dictionary words. Searching for the minimum or maximum follows a similar pattern of a loop with an if statement inside it. The pattern to follow is an enhanced for loop or an indexed for loop, with an embedded if statement. Remember that enhanced for loops cannot be used to modify primitive values in an array or to return an index. + .. code-block:: java @@ -49,19 +168,18 @@ Here are two common array traversal loops that can be used for these algorithms: } -.. |Java visualizer| raw:: html +.. |Java visualizer min| raw:: html Java visualizer |CodingEx| **Coding Exercise** - .. activecode:: minmax :language: java :autograde: unittest - The code below finds the minimum (smallest element) in an array. Try it in the |Java visualizer| with the CodeLens button. Can you change it to find the maximum element instead? Can you also compute the average of the elements? + The code below finds the minimum (smallest element) in an array. Try it in the |Java visualizer min| with the CodeLens button. Can you change it to find the maximum element instead? Can you also compute the average of the elements? ~~~~ public class MinMax { @@ -130,19 +248,458 @@ Here are two common array traversal loops that can be used for these algorithms: } } +When searching for an element or a minimum or maximum, it is important not to leave the loop early before finding the correct value and not to replace the value with subsequent ones. + +|Exercise| **Check Your Understanding** + +.. activecode:: early_return_error + :language: java + :autograde: unittest + :practice: T + + Run the following code. Does it find 7 in the array? Click on Code Lens to trace through the code to see why not. Fix the early return error in the following code. + ~~~~ + public class FindError + { + public static boolean find(int[] array, int target) + { + for (int val : array) + { + if (val == target) + { + return true; + } + else + { + return false; + } + } + return false; + } + + public static void main(String[] args) + { + int[] values = {6, 2, 1, 7, 12, 5}; + System.out.println(find(values, 7)); + } + } + ==== + import static org.junit.Assert.*; + + import org.junit.*; + + import java.io.*; + + public class RunestoneTests extends CodeTestHelper + { + public RunestoneTests() + { + super("FindError"); + } + + @Test + public void test1() + { + String output = getMethodOutput("main"); + String expect = "true"; + + boolean passed = (output.equals(expect)); + getResults(expect, output, "Testing main() output", passed); + assertTrue(passed); + } + + @Test + public void test2() + { + int[] values = {-1, 0, 1}; + String output = "" + FindError.find(values, 0); + String expect = "true"; + + boolean passed = getResults(expect, output, "Testing find({-1, 0, 1}, 0)"); + assertTrue(passed); + } + } + + + + +.. mchoice:: mcq_array_error1 + :practice: T + :random: + :answer_a: Whenever the first element in array is not equal to target. + :answer_b: Whenever array contains any element which equals target. + :answer_c: Always + :answer_d: Never + :correct: a + :feedback_a: Yes, the loop returns as soon as checking the first element, whether it is equal to target or not. It needs to check the whole array before returning false. The else statement should not be included. + :feedback_b: This would be true if the else statement was not there, but it returns false right away after just checking the first element instead of going through all of the elements to makes sure none of them are equal to target. + :feedback_c: If the first element is equal to the target, it will return true. + :feedback_d: It will return false with the else statement if the first element is not equal to the target. + + Given that ``array`` is an array of integers and ``target`` is an integer value, which of the following best describes the conditions under which the following code segment will return false? + + .. code-block:: java + + public boolean find(int[] array, int target) + { + for (int val : array) + { + if (val == target) + { + return true; + } + else + { + return false; + } + } + return false; + } + + +Test Property +------------------- + +Often we loop through an array to see if elements have a particular property, for example all the elements are even or at least one is negative. On the AP exam, this property is often given as a boolean method to use in the if statement to: + +- Determine if at least one element has a particular property +- Determine if all elements have a particular property +- Determine the number of elements having a particular property + +Here are some patterns. Note that determining if *all* have a certain property means that we need to check all elements before returning true, so we often have to check for the negation of the property to return false. + +.. code-block:: java + + // see if at least one has the property + for (int val : values) + { + if (isProperty(val)) + { + return true; + } + } + return false; + + // see if all have the property + for (int val : values) + { + if (!isProperty(val)) + { + return false; + } + } + return true; + + // count the number of elements with the property + int count = 0; + for (int val : values) + { + if (isProperty(val)) + { + count++; + } + } + + +.. parsonsprob:: parsons-even-array + :numbered: left + :practice: T + :adaptive: + + The following program segment should count the number of elements in the array that are even using an enhanced for each loop. But, the blocks have been mixed up. Drag the blocks from the left and put them in the correct order on the right. Click the Check button to check your solution. + ----- + int[] arr = {14, -5, 2, 17, 29, -8, 36}; + int count = 0; + ===== + for (int value : arr) + { + ===== + if (value % 2 == 0) + { + ===== + count++; + ===== + } //end conditional + ===== + } //end for loop + +.. activecode:: exAllOdd + :language: java + :autograde: unittest + :practice: T + + Write the method allOdd to return true if all the values in the array are odd. First write the helper function isEven to return true or false for one value, using %. + ~~~~ + public class Test1 + { + public static boolean isEven(int value) + { + // 1. TODO: return true if value is even, false otherwise + return true; + } + + public static boolean allOdd(int[] array) + { + // 2. TODO: Loop thru the array + // and return false if any value isEven + + // if all odd, return true + return true; + } + + public static void main(String[] args) + { + int[] a1 = {1, 3, 6}; + int[] a2 = {1, 3, 5}; + System.out.println(allOdd(a1)); + System.out.println(allOdd(a2)); + } + } + ==== + import static org.junit.Assert.*; + + import org.junit.*; + + import java.io.*; + + public class RunestoneTests extends CodeTestHelper + { + @Test + public void testMain() throws IOException + { + String output = getMethodOutput("main"); + String expect = "false\ntrue\n"; + + boolean passed = getResults(expect, output, "Expected output from main"); + assertTrue(passed); + } + @Test + public void testMethod() + { + int[] nums = {10, 20, 30, 40}; + Object[] args = {nums}; + + String output = getMethodOutput("allOdd", args); + String expect = "false"; + + boolean passed = getResults(expect, output, "allOdd({10, 20, 30, 40})"); + assertTrue(passed); + } + @Test + public void testMethod2() + { + int[] nums = {37,41,55,99}; + Object[] args = {nums}; + + String output = getMethodOutput("allOdd", args); + String expect = "true"; + + boolean passed = getResults(expect, output, "allOdd({37,41,55,99})"); + assertTrue(passed); + } + } + +Pairs and Duplicates in Array +------------------------------ + +Here is a pattern to check for duplicates in an array by accessing a pair of elements next to each other, ``array[i]`` and ``array[i+1]``. Note that we need to use an indexed for loop to get access to the next element. + +.. code-block:: java + + // check for duplicates next to each other + for (int i = 0; i < values.length - 1; i++) + { + if (values[i] == values[i + 1]) + { + return true; + } + } + return false; + +If we want to check for duplicates anywhere in the array, we need to use a nested loop to compare all pairs of elements in the array. + +.. code-block:: java + + // check for duplicates anywhere in the array + for (int i = 0; i < values.length; i++) + { + for (int j = i + 1; j < values.length; j++) + { + if (values[i] == values[j]) + { + return true; + } + } + } + return false; + +.. activecode:: sumPairs + :language: java + :autograde: unittest + :practice: T + + Create a method ``sumPairs10(nums)`` returns ``true`` if there are at least two items in the array ``nums`` that are adjacent (next to each other) that add up to 10, otherwise return ``false``. + ~~~~ + public class Pairs + { + public static boolean sumPairs10(int[] nums) + { + // TODO: if two adjacent numbers in nums add up to 10, return true + + + return false; + } + + public static void main(String[] args) + { + + int[] nums1 = {1, 2, 8}; + System.out.println(sumPairs10(nums1)); + + int[] nums2 = {2, 1, 2}; + System.out.println(sumPairs10(nums2)); + } + + } + ==== + import static org.junit.Assert.*; + import org.junit.Test; + import java.io.IOException; + + public class RunestoneTests extends CodeTestHelper { + public RunestoneTests() + { + super("Pairs"); + } + + @Test + public void testMain() throws IOException { + String output = getMethodOutput("main"); + String expect = "true\nfalse\n"; + boolean passed = getResults(expect, output, "Expected output from main"); + assertTrue(passed); + } + @Test + public void testMethod2() + { + int[] nums = {2, 4, 6, 8}; + Object[] args = {nums}; + + String output = getMethodOutput("sumPairs10", args); + String expect = "true"; + + boolean passed = getResults(expect, output, "sumPairs10({2, 4, 6, 8})"); + assertTrue(passed); + } + } + +.. activecode:: noDups + :language: java + :autograde: unittest + :practice: T + + Create a method ``noDups(nums)`` returns ``true`` if there are no repeated (duplicate) items in the array ``nums``. It should return false if it does find a repeated element using nested loops. + ~~~~ + public class Pairs + { + public static boolean noDups(int[] nums) + { + // TODO: use nested loops to check if any item appears more than once in nums + + + return true; + } + + public static void main(String[] args) + { + + int[] nums1 = {1, 2, 8}; + System.out.println(noDups(nums1)); + + int[] nums2 = {3, 3, 3}; + System.out.println(noDups(nums2)); + } + } + ==== + import static org.junit.Assert.*; + import org.junit.Test; + import java.io.IOException; + + public class RunestoneTests extends CodeTestHelper { + public RunestoneTests() + { + super("Pairs"); + } + + @Test + public void testMain() throws IOException { + String output = getMethodOutput("main"); + String expect = "true\nfalse\n"; + boolean passed = getResults(expect, output, "Expected output from main"); + assertTrue(passed); + } + @Test + public void testMethod2() + { + int[] nums = {2, 4, 6, 2}; + Object[] args = {nums}; + + String output = getMethodOutput("noDups", args); + String expect = "false"; + + boolean passed = getResults(expect, output, "noDups({2, 4, 6, 2})"); + assertTrue(passed); + } + } + +Rotating Array Elements +------------------------- + +Rotating an array means shifting all the elements in the array to the right or left by one position. For example, if the array is {6, 2, 5, 3}, rotating it to the right would give {3, 6, 2, 5}. To rotate an array, we need to copy the last element to the first position and then copy all the other elements to the next position. We can use a temporary variable to store the last element before overwriting it. If you do not want to change the original array, you can return a new array by copying in the rotated elements. + +.. parsonsprob:: rotateRightParsons + :numbered: left + :practice: T + :adaptive: + + The following program segment is a method that should return an integer array that is rotated to the right -- so {6, 2, 5, 3} returns {3, 6, 2, 5} (the parameter). Note that the method return type is int[] which means it will return an int array. But, the blocks have been mixed up and include one extra block that is not needed in a correct solution. Drag the blocks from the left and put them in the correct order on the right. Click the Check button to check your solution. + ----- + public static int[] rotateRight(int[] arr) + { + ===== + int[] result = new int[arr.length]; + ===== + result[0] = arr[arr.length-1]; + ===== + for (int i = 0; i < arr.length - 1; i++) + { + ===== + for (int i = 0; i < arr.length; i++) + { #distractor + ===== + result[i + 1] = arr[i]; + ===== + } //end for loop + ===== + return result; + ===== + } //end shiftRight method + .. |visualizer| raw:: html Java visualizer -|CodingEx| **Coding Exercise** +We can also rotate in place without constructing another array. We can copy the last element to the first position and then copy all the other elements to the next position. We need to use an indexed loop to access the elements at different indices. When you pass an array to a method, you're actually passing a reference to the array's memory location. This means that any changes made to the array within the method will affect the original array. +|CodingEx| **Coding Exercise** + .. activecode:: rotate :language: java :autograde: unittest - The code below rotates array elements to the left. Note that you need to use an indexed loop for this because you need to change the array and access two elements at different indices. Try it in the |visualizer| with the CodeLens button. Can you change it to rotate the elements to the right instead? Hint: use a backwards loop. + The code below rotates array elements to the left in place without constructing another array. Try it in the |visualizer| with the CodeLens button. Can you change it to rotate the elements to the right instead? Hint: use a backwards loop. ~~~~ public class Rotate { @@ -170,9 +727,7 @@ Here are two common array traversal loops that can be used for these algorithms: } } } - ==== - // Test for Lesson 6.4.2 - Rotate import static org.junit.Assert.*; import org.junit.*; @@ -207,6 +762,129 @@ Here are two common array traversal loops that can be used for these algorithms: } } +Reversing an Array +------------------- + +Reversing an array is similar to rotating it. We can copy the first element to the last position, the second element to the second-to-last position, and so on. We can use a temporary variable to store the value of the element we are overwriting. We usually need an indexed loop to access the elements at different indices unless we use a temporary array to store the reversed elements. Note that arrays are passed as references to methods, so any changes made to the array within the method will affect the original array. + +The following programs show how you can reverse an array in place by swapping elements. You can use a while loop or an indexed for loop to do this to swap items from the start and the end of the array. To swap two elements, you need to use a temp variable to store the value of the element you are overwriting. Imagine that you have a glass of milk and a glass of orange juice. How would you swap the contents of the two glasses without making a huge mess? You would need a third glass to hold the contents of one of the glasses while you pour the contents of the other glass into it. Then you can pour the contents of the third glass into the other glass. This is the same idea behind swapping elements in an array. + +.. figure:: Figures/swap.png + :width: 300px + :align: center + :figclass: align-center + + Figure 1: Swapping elements in an array + +.. code-block:: java + + // Swapping 2 elements at index i and j + int temp = array[i]; // pour milk into temp cup + array[i] = array[j]; // pour orange juice into milk glass + array[j] = temp; // pour milk from temp into oj glass + +|CodingEx| **Coding Exercise** + +.. parsonsprob:: parsons_array_reverse2 + :numbered: left + :practice: T + :adaptive: + :noindent: + + The following method reverses an array in place using a while loop and a temp variable to swap the first and last items. But, the blocks have been mixed up and include two extra blocks that are not needed in a correct solution. Drag the blocks from the left and put them in the correct order on the right. Click the Check button to check your solution. + ----- + public static void reverse(int[] array) + { + ===== + int start = 0; + int end = array.length - 1; + ===== + while (start < end) + { + ===== + for(int i = start; i < end; i++) + { #distractor + ===== + int temp = array[start]; + ===== + array[start] = array[end]; + ===== + array[end] = temp; + ===== + start++; + end--; + ===== + start++; #distractor + ===== + } + } + +.. activecode:: reverseArrayCode + :language: java + :autograde: unittest + :practice: T + + Create a method ``reverse`` that reverses an array in place using a temp variable. + ~~~~ + import java.util.Arrays; + + public class ReverseTest + { + public static void reverse(String[] array) + { + // TODO: reverse array in place using a temp variable to swap elements + + } + + public static void main(String[] args) + { + String[] a1 = {"p","a","w","s"}; + reverse(a1); + System.out.println(Arrays.toString(a1)); + } + } + ==== + import static org.junit.Assert.*; + + import org.junit.*; + + import java.io.*; + import java.util.Arrays; + + public class RunestoneTests extends CodeTestHelper + { + public RunestoneTests() + { + super("ReverseTest"); + } + + @Test + public void testMain() throws IOException + { + String output = getMethodOutput("main"); + String expect = "[s, w, a, p]"; + boolean passed = getResults(expect, output, "Expected output from main"); + assertTrue(passed); + } + @Test + public void testMethod2() + { + String[] a = {"r","a","t","s"}; + ReverseTest.reverse(a); + String output = Arrays.toString(a); + String expect = "[s, t, a, r]"; + + boolean passed = getResults(expect, output, "reverse({r, a, t, s})"); + assertTrue(passed); + } + } + + +FRQ Practice +------------- + +|Time90| + We encourage you to work in pairs or groups to tackle the following challenging FRQ problems and take them one step at a time. These will get easier with practice! .. toctree::