<snapdata remixID="9393219"><project name="U8L2-SelectionSort" app="Snap! 5.4, http://snap.berkeley.edu" version="1"><notes></notes><thumbnail>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAYAAAB1ovlvAAAFLklEQVR4Xu2dOy9tXRSGhzuRIKIRt7gFIW5BNP6BUqtRiF7tf6iVSoVaiYRG4xYEcYm43+8ncybE952D75y9T8b49nhWIoq913zHeN/HnGuutRJpr6+vr8KBA0oOpAGgkvPIRgcAEBBUHQBAVfsRB0AYUHUAAFXtRxwAYUDVAQBUtR9xAIQBVQcAUNV+xAEQBlQdAEBV+xEHQBhQdQAAVe1HHABhQNUBAFS1H3EAhAFVBwBQ1X7EARAGVB0AQFX7EQdAGFB1AABV7UccAGFA1QEAVLUfcQCEAVUHAFDVfsQBEAZUHQBAVfsRB0AYUHUAAFXtRxwAYUDVAQBUtR9xAIQBVQcAUNV+xAEQBlQdAEBV+xEHQBhQdQAAVe1HHABhQNUBAFS1H3EAhAFVBwBQ1X7EARAGVB0AQFX7EQdAGFB1AACTZP/Z2Zlsb2/L6empvLy8SFpamhQUFEhlZaWUlJQkSSX1hgHAJGR6eHgoKysrEbbi4mJJT0+X8E9IA5Q7OztSVlYmVVVVSVBKvSEAMMFMHx8fZXZ2Vjo7OyU/P/+n0R4eHmRubu7TzxOU/9+fDoAJRri3tydhBuzo6Ph0pOXl5QhnRUVFgmqpdzoAJpjp5uam3N3dSVNTUxxpaWkpXv+1tLS8j7y1tRWX5Orq6gTVUu90AEww048Ahmu+wcHBuAmZnJx8X5IB8HOTATCJAK6vr8v4+LiE68LR0dG4KQkHAAJggph9fvrHGfDq6koGBgbicjs1NSU5OTkA+I3zzIAJorm7uysnJyfS2toaRzo/P4+/CwsL30deW1uLML7NiAlKptTpAJhgnLe3t7KwsCBdXV2Sm5v702jPz88yPz8fNylFRUUJqqXe6QCYhEw3Njbk+PhY6uvr48YjMzMzLsM3NzcSZr+srKx/7IqTIJkyQwBgkqI8ODiIj+LCjefe3l7Z39+XsCkpLy+XmpoaycjISJJSag0DgJ/kOT09LeEmc1ham5ub4yz23bG6uhpBu7+/l8vLS2loaGDZZRPyHTa//vzo6EiGh4fl6ekp3lgOELa1tUlfX198tvvvI0AXHsmF75aWlkptbW18JszxtQPMgF/4s7i4KGNjY5Kdnf3+revr6/h2S3t7e/zp6emJs1x43BZuRDc2NjLr/cZfHQB+YdbFxYUMDQ1J2Ml+PMJsl5eXF2fF7u5u6e/vj5uQtzdhfsN/918FwC8QGBkZiS8ahGU4QBiu6d5mvbq6uv90XeieMK4B/wyBiYkJmZmZia9RBejCTPf2ZOPPRuSsXznADPgJF2HWC/fzOP6uAwD4d/1ldJZgGLDsADOg5XQc1AaADkK23CIAWk7HQW0A6CBkyy0CoOV0HNQGgA5CttwiAFpOx0FtAOggZMstAqDldBzUBoAOQrbcIgBaTsdBbQDoIGTLLQKg5XQc1AaADkK23CIAWk7HQW0A6CBkyy0CoOV0HNQGgA5CttwiAFpOx0FtAOggZMstAqDldBzUBoAOQrbcIgBaTsdBbQDoIGTLLQKg5XQc1AaADkK23CIAWk7HQW0A6CBkyy0CoOV0HNQGgA5CttwiAFpOx0FtAOggZMstAqDldBzUBoAOQrbcIgBaTsdBbQDoIGTLLQKg5XQc1AaADkK23CIAWk7HQW0A6CBkyy0CoOV0HNQGgA5CttwiAFpOx0FtAOggZMstAqDldBzUBoAOQrbcIgBaTsdBbQDoIGTLLQKg5XQc1AaADkK23CIAWk7HQW0A6CBkyy0CoOV0HNQGgA5CttziD/Xd47cXW/G0AAAAAElFTkSuQmCC</thumbnail><stage name="Stage" width="480" height="360" costume="0" color="255,255,255,1" tempo="60" threadsafe="false" penlog="false" volume="100" pan="0" lines="round" ternary="false" codify="false" inheritance="true" sublistIDs="false" scheduled="false" id="1"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAOhUlEQVR4Xu3VwQkAAAjEMN1/abewn7jAQRC64wgQIECAAIF3gX1fNEiAAAECBAiMAHsCAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQIHLFxAWmhEwHPAAAAAElFTkSuQmCC</pentrails><costumes><list struct="atomic" id="2"></list></costumes><sounds><list struct="atomic" id="3"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites><sprite name="Sprite" idx="1" x="1.5393818544366962" y="-1.9062811565304132" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="80,80,80,1" pen="tip" id="8"><costumes><list struct="atomic" id="9"></list></costumes><sounds><list struct="atomic" id="10"></list></sounds><blocks></blocks><variables></variables><scripts><script x="13" y="15"><custom-block s="earliest in %l recursive"><l/></custom-block></script><script x="12" y="42"><custom-block s="earliest in %l iterative"><l/></custom-block></script><script x="11" y="66"><custom-block s="remove value %s from %l"><l></l><l/></custom-block></script><script x="10" y="89"><custom-block s="list with smallest removed %l"><l/></custom-block></script><comment x="221" y="10" w="104" collapsed="false">I&apos;ve made all these functions for you.  They are all used in each other, or you will use them directly inside the selection sort algorithm</comment><script x="14" y="146"><custom-block s="index of earliest in %l"><l/><comment w="239" collapsed="false">This is my most efficient answer to the problem you&apos;ve been wrestling with for two days.  Turns out it isn&apos;t 100% necessary for the selection sort.  You can use it, or you can do it the way we&apos;re working on today. </comment></custom-block></script><comment x="10" y="426" w="123" collapsed="false">This times your sorting algorithm.  See how the time changes when you set the list size to 100, 200, 500, 1000... see when you break snap!  SAVE YOUR WORK before trying really big lists.</comment><script x="156" y="483.0000000000001"><block s="doResetTimer"></block><block s="doSetVar"><l>sorted list</l><custom-block s="selection sort %l"><block var="list of numbers"/></custom-block></block><block s="bubble"><block s="getTimer"></block></block></script><script x="13" y="335"><block s="doSetVar"><l>list of numbers</l><block s="reportNewList"><list></list></block><comment w="90" collapsed="false">Sets up a list of random numbers to sort.  Once you get your sorting algorithm working on a small list, see how long it takes to work on a much longer list.</comment></block><block s="doRepeat"><l>20</l><script><block s="doAddToList"><block s="reportRandom"><l>1</l><l>100</l></block><block var="list of numbers"/></block></script></block></script><script x="16.549805687499997" y="262.000001"><custom-block s="selection sort %l"><l/><comment w="268" collapsed="false">Finish this algorithm.  See inside for instructions.</comment></custom-block></script></scripts></sprite><watcher var="list of numbers" style="normal" x="7.083333333333485" y="21.958334749999985" color="243,118,29" extX="80" extY="70" hidden="true"/><watcher var="sorted list" style="normal" x="21.518987341772004" y="21.518987341772146" color="243,118,29" extX="80" extY="70" hidden="true"/></sprites></stage><hidden></hidden><headers></headers><code></code><blocks><block-definition s="earliest in %&apos;list&apos; recursive" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doIfElse"><block s="reportListIsEmpty"><block s="reportCDR"><block var="list"/></block></block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="list"/></block></block></script><script><block s="doDeclareVariables"><list><l>smaller</l></list><comment w="90" collapsed="false">This is the smallest item from the rest of the list.</comment></block><block s="doSetVar"><l>smaller</l><custom-block s="earliest in %l recursive"><block s="reportCDR"><block var="list"/></block></custom-block></block><block s="doIfElse"><block s="reportLessThan"><block s="reportListItem"><l>1</l><block var="list"/></block><block var="smaller"/></block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="list"/></block></block></script><script><block s="doReport"><block var="smaller"/></block></script></block></script></block></script></block-definition><block-definition s="earliest in %&apos;list&apos; iterative" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>smallest candidate</l></list></block><block s="doSetVar"><l>smallest candidate</l><block s="reportListItem"><l>1</l><block var="list"/></block></block><block s="doIf"><block s="reportGreaterThan"><block s="reportListLength"><block var="list"/></block><l>1</l></block><script><block s="doFor"><l>i</l><l>2</l><block s="reportListLength"><block var="list"/></block><script><block s="doIf"><block s="reportLessThan"><block s="reportListItem"><block var="i"/><block var="list"/></block><block var="smallest candidate"/></block><script><block s="doSetVar"><l>smallest candidate</l><block s="reportListItem"><block var="i"/><block var="list"/></block></block></script></block></script></block></script></block><block s="doReport"><block var="smallest candidate"/></block></script></block-definition><block-definition s="index of earliest in %&apos;list&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>candidate value</l><l>candidate index</l></list></block><block s="doSetVar"><l>candidate index</l><l>1</l></block><block s="doSetVar"><l>candidate value</l><block s="reportListItem"><l>1</l><block var="list"/></block></block><block s="doIf"><block s="reportGreaterThan"><block s="reportListLength"><block var="list"/></block><l>1</l></block><script><block s="doFor"><l>i</l><l>2</l><block s="reportListLength"><block var="list"/></block><script><block s="doIf"><block s="reportLessThan"><block s="reportListItem"><block var="i"/><block var="list"/></block><block var="candidate value"/></block><script><block s="doSetVar"><l>candidate value</l><block s="reportListItem"><block var="i"/><block var="list"/></block></block><block s="doSetVar"><l>candidate index</l><block var="i"/></block></script></block></script></block></script></block><block s="doReport"><block var="candidate index"/></block></script></block-definition><block-definition s="selection sort %&apos;list&apos;" type="reporter" category="lists"><comment w="248" collapsed="false">To accomplish this sort, we find the first item in the list, move it to the front, then call the function again on the rest of the list.&#xD;&#xD;Our BASE CASE is done for you.  It is when we have only one item left in our list.  At that point, we just return the one-item list, and the recursion unspools itself.&#xD;&#xD;YOUR JOB: Complete the recursive step (the ELSE section).  You need to find the smallest item in the list (use one of the functions I made for this - there are two different versions to choose - recursive/iterative).  Then you need to start the recursion.  &#xD;&#xD;HINT: You should report the smallest item in front of the rest of the list without that item passed through the selection sort algorithm again.</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doIfElse"><block s="reportEquals"><block s="reportListLength"><block var="list"/></block><l>1</l></block><script><block s="doReport"><block var="list"/></block></script><script><block s="doDeclareVariables"><list><l>smallest</l></list></block><block s="doSetVar"><l>smallest</l><l></l></block><block s="doReport"><l></l></block></script></block></script></block-definition><block-definition s="list with smallest removed %&apos;list&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><custom-block s="remove value %s from %l"><custom-block s="earliest in %l recursive"><block var="list"/></custom-block><block var="list"/></custom-block></block></script></block-definition><block-definition s="remove value %&apos;value&apos; from %&apos;list&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doIfElse"><block s="reportEquals"><block s="reportListItem"><l>1</l><block var="list"/></block><block var="value"/></block><script><block s="doReport"><block s="reportCDR"><block var="list"/></block></block></script><script><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="list"/></block><custom-block s="remove value %s from %l"><block var="value"/><block s="reportCDR"><block var="list"/></block></custom-block></block></block></script></block></script></block-definition></blocks><variables><variable name="list of numbers"><list struct="atomic" id="268">66,78,27,56,28,77,43,21,46,13,18,48,28,20,97,81,22,56,13,31</list></variable><variable name="sorted list"><list struct="atomic" linked="linked" id="269">16,18,21,25,26,26,28,32,39,41,48,53,60,73,73,78,82,84,85,91</list></variable></variables></project><media name="U8L2-SelectionSort" app="Snap! 5.4, http://snap.berkeley.edu" version="1"></media></snapdata>