[{"data":1,"prerenderedAt":6370},["ShallowReactive",2],{"dsa-complexiteit":3,"dsa-nav-complexiteit":2399},{"id":4,"title":5,"body":6,"description":2390,"extension":2391,"icon":2392,"meta":2393,"navigation":1701,"order":386,"path":2394,"seo":2395,"stem":2396,"topic":2397,"__hash__":2398},"practicelyDsa\u002Fpracticely-dsa\u002Fcomplexiteit.md","Complexiteit en Big-O: zo schat je de looptijd van een algoritme",{"type":7,"value":8,"toc":2373},"minimark",[9,23,37,42,54,102,120,124,127,164,181,198,202,205,224,347,355,359,362,367,503,513,517,735,753,758,776,780,883,897,900,994,1050,1068,1072,1075,1301,1314,1318,1460,1472,1476,1494,1497,1595,1598,1856,1870,1874,1884,1889,1911,1983,1986,2124,2136,2142,2155,2159,2244,2248,2312,2316,2369],[10,11,12,13,17,18,22],"p",{},"Twee programma's kunnen precies hetzelfde antwoord geven en toch totaal verschillend presteren. Het\nene sorteert een miljoen getallen in een fractie van een seconde, het andere is na een uur nog bezig.\n",[14,15,16],"strong",{},"Complexiteit"," (",[19,20,21],"em",{},"complexity",") is de taal waarmee je dat verschil beschrijft zonder een stopwatch:\nje telt hoe het aantal stappen groeit als de invoer groter wordt.",[10,24,25,26,31,32,36],{},"Je hebt dit nodig op elk tentamen algoritmen, in vrijwel elk technisch sollicitatiegesprek (\"wat is\nde complexiteit van jouw oplossing?\") en in de praktijk, zodra je data groter wordt dan je testset.\nAlle andere onderwerpen hier, van ",[27,28,30],"a",{"href":29},"\u002Fpracticely\u002Fdsa\u002Fsorteren","sorteren"," tot\n",[27,33,35],{"href":34},"\u002Fpracticely\u002Fdsa\u002Fgrafen","grafen",", gebruiken deze notatie.",[38,39,41],"h2",{"id":40},"big-o-en-θ-het-idee","Big-O en Θ: het idee",[10,43,44,45,49,50,53],{},"Noem de grootte van de invoer ",[46,47,48],"code",{},"n"," (het aantal elementen in een lijst, het aantal knopen in een graaf).\nDe looptijd ",[46,51,52],{},"T(n)"," is het aantal basisstappen: een vergelijking, een toekenning, een optelling.",[55,56,57,85],"ul",{},[58,59,60,17,63,66,67,70,71,74,75,77,78,80,81,84],"li",{},[14,61,62],{},"Big-O",[46,64,65],{},"O",") is een ",[14,68,69],{},"bovengrens",": ",[46,72,73],{},"T(n) = O(f(n))"," betekent dat ",[46,76,52],{}," voor grote ",[46,79,48],{}," hooguit\neen constante keer ",[46,82,83],{},"f(n)"," is.",[58,86,87,17,90,66,93,70,96,98,99,101],{},[14,88,89],{},"Theta",[46,91,92],{},"Θ",[14,94,95],{},"strakke grens",[46,97,52],{}," groeit precies zo snel als ",[46,100,83],{},", op een\nconstante factor na. Zowel boven- als ondergrens.",[10,103,104,105,108,109,112,113,115,116,119],{},"Strikt genomen is een enkele lus ook ",[46,106,107],{},"O(n²)",", want ",[46,110,111],{},"n²"," is óók een bovengrens. Maar dat is een\nnutteloos antwoord. Op Practicely en op de meeste tentamens bedoelen we met Big-O de ",[14,114,95],{},":\neen enkele lus is ",[46,117,118],{},"O(n)",", punt.",[38,121,123],{"id":122},"rekenregels","Rekenregels",[10,125,126],{},"Je hoeft nooit precies te tellen. Twee regels doen het meeste werk:",[128,129,130,150],"ol",{},[58,131,132,135,136,139,140,142,143,146,147,149],{},[14,133,134],{},"Constanten vallen weg."," ",[46,137,138],{},"3n + 7"," is ",[46,141,118],{},". ",[46,144,145],{},"n\u002F2"," is ook ",[46,148,118],{},".",[58,151,152,135,155,139,158,160,161,163],{},[14,153,154],{},"Alleen de dominante term telt.",[46,156,157],{},"n² + 100n + 5000",[46,159,107],{},", want voor grote ",[46,162,48],{}," maakt de\nrest niets meer uit.",[10,165,166,167,139,170,172,173,176,177,180],{},"Zie het zo: bij ",[46,168,169],{},"n = 1000",[46,171,111],{}," een miljoen en ",[46,174,175],{},"100n"," maar honderdduizend. Bij ",[46,178,179],{},"n = 1.000.000"," is\nhet verschil een factor tienduizend.",[10,182,183,184,187,188,191,192,195,196,149],{},"Verder geldt: het grondtal van een logaritme maakt in Big-O niet uit, omdat ",[46,185,186],{},"log₁₀ n"," en ",[46,189,190],{},"log₂ n","\neen constante factor van elkaar verschillen. Staat er ",[46,193,194],{},"log n",", dan bedoelen we ",[46,197,190],{},[38,199,201],{"id":200},"de-veelvoorkomende-klassen","De veelvoorkomende klassen",[10,203,204],{},"Van snel naar traag:",[10,206,207,210,211,210,214,210,216,210,219,210,221],{},[46,208,209],{},"O(1)"," \u003C ",[46,212,213],{},"O(log n)",[46,215,118],{},[46,217,218],{},"O(n log n)",[46,220,107],{},[46,222,223],{},"O(2ⁿ)",[225,226,227,246],"table",{},[228,229,230],"thead",{},[231,232,233,237,240,243],"tr",{},[234,235,236],"th",{},"Klasse",[234,238,239],{},"Naam",[234,241,242],{},"Voorbeeld",[234,244,245],{},"Stappen bij n = 1000 (orde)",[247,248,249,269,287,302,317,332],"tbody",{},[231,250,251,256,259,266],{},[252,253,254],"td",{},[46,255,209],{},[252,257,258],{},"constant",[252,260,261,262,265],{},"element ",[46,263,264],{},"a[i]"," opvragen",[252,267,268],{},"1",[231,270,271,275,278,284],{},[252,272,273],{},[46,274,213],{},[252,276,277],{},"logaritmisch",[252,279,280],{},[27,281,283],{"href":282},"\u002Fpracticely\u002Fdsa\u002Fzoeken","binair zoeken",[252,285,286],{},"10",[231,288,289,293,296,299],{},[252,290,291],{},[46,292,118],{},[252,294,295],{},"lineair",[252,297,298],{},"maximum van een lijst zoeken",[252,300,301],{},"1.000",[231,303,304,308,311,314],{},[252,305,306],{},[46,307,218],{},[252,309,310],{},"n-log-n",[252,312,313],{},"merge sort",[252,315,316],{},"10.000",[231,318,319,323,326,329],{},[252,320,321],{},[46,322,107],{},[252,324,325],{},"kwadratisch",[252,327,328],{},"insertion sort, alle paren bekijken",[252,330,331],{},"1.000.000",[231,333,334,338,341,344],{},[252,335,336],{},[46,337,223],{},[252,339,340],{},"exponentieel",[252,342,343],{},"alle deelverzamelingen opsommen",[252,345,346],{},"meer dan atomen in het heelal",[10,348,349,350,187,352,354],{},"Het verschil tussen ",[46,351,218],{},[46,353,107],{}," is bij duizend elementen al een factor honderd. Daarom\nloont het om de klasse van je algoritme te kennen.",[38,356,358],{"id":357},"lussen-tellen","Lussen tellen",[10,360,361],{},"Het meeste werk bij het bepalen van de complexiteit is: kijk hoe vaak de binnenste opdracht wordt\nuitgevoerd.",[363,364,366],"h3",{"id":365},"enkele-lus","Enkele lus",[368,369,370,432],"code-tabs",{},[371,372,374],"template",{"v-slot:python":373},"",[375,376,380],"pre",{"className":377,"code":378,"language":379,"meta":373,"style":373},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","for i in range(n):\n    totaal += a[i]\n","python",[46,381,382,411],{"__ignoreMap":373},[383,384,387,391,395,398,402,406,408],"span",{"class":385,"line":386},"line",1,[383,388,390],{"class":389},"s7zQu","for",[383,392,394],{"class":393},"sTEyZ"," i ",[383,396,397],{"class":389},"in",[383,399,401],{"class":400},"s2Zo4"," range",[383,403,405],{"class":404},"sMK4o","(",[383,407,48],{"class":400},[383,409,410],{"class":404},"):\n",[383,412,414,417,420,423,426,429],{"class":385,"line":413},2,[383,415,416],{"class":393},"    totaal ",[383,418,419],{"class":404},"+=",[383,421,422],{"class":393}," a",[383,424,425],{"class":404},"[",[383,427,428],{"class":393},"i",[383,430,431],{"class":404},"]\n",[371,433,434],{"v-slot:java":373},[375,435,439],{"className":436,"code":437,"language":438,"meta":373,"style":373},"language-java shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","for (int i = 0; i \u003C n; i++) {\n    totaal += a[i];\n}\n","java",[46,440,441,482,497],{"__ignoreMap":373},[383,442,443,445,447,451,453,456,460,463,465,468,471,473,476,479],{"class":385,"line":386},[383,444,390],{"class":389},[383,446,17],{"class":404},[383,448,450],{"class":449},"spNyl","int",[383,452,394],{"class":393},[383,454,455],{"class":404},"=",[383,457,459],{"class":458},"sbssI"," 0",[383,461,462],{"class":404},";",[383,464,394],{"class":393},[383,466,467],{"class":404},"\u003C",[383,469,470],{"class":393}," n",[383,472,462],{"class":404},[383,474,475],{"class":393}," i",[383,477,478],{"class":404},"++)",[383,480,481],{"class":404}," {\n",[383,483,484,486,488,490,492,494],{"class":385,"line":413},[383,485,416],{"class":393},[383,487,419],{"class":404},[383,489,422],{"class":393},[383,491,425],{"class":404},[383,493,428],{"class":393},[383,495,496],{"class":404},"];\n",[383,498,500],{"class":385,"line":499},3,[383,501,502],{"class":404},"}\n",[10,504,505,506,508,509,149],{},"De body draait ",[46,507,48],{}," keer: ",[14,510,511],{},[46,512,118],{},[363,514,516],{"id":515},"geneste-lussen","Geneste lussen",[368,518,519,610],{},[371,520,521],{"v-slot:python":373},[375,522,524],{"className":377,"code":523,"language":379,"meta":373,"style":373},"for i in range(n):\n    for j in range(i + 1, n):\n        if a[i] == a[j]:\n            gevonden = True\n",[46,525,526,542,572,599],{"__ignoreMap":373},[383,527,528,530,532,534,536,538,540],{"class":385,"line":386},[383,529,390],{"class":389},[383,531,394],{"class":393},[383,533,397],{"class":389},[383,535,401],{"class":400},[383,537,405],{"class":404},[383,539,48],{"class":400},[383,541,410],{"class":404},[383,543,544,547,550,552,554,556,559,562,565,568,570],{"class":385,"line":413},[383,545,546],{"class":389},"    for",[383,548,549],{"class":393}," j ",[383,551,397],{"class":389},[383,553,401],{"class":400},[383,555,405],{"class":404},[383,557,558],{"class":400},"i ",[383,560,561],{"class":404},"+",[383,563,564],{"class":458}," 1",[383,566,567],{"class":404},",",[383,569,470],{"class":400},[383,571,410],{"class":404},[383,573,574,577,579,581,583,586,589,591,593,596],{"class":385,"line":499},[383,575,576],{"class":389},"        if",[383,578,422],{"class":393},[383,580,425],{"class":404},[383,582,428],{"class":393},[383,584,585],{"class":404},"]",[383,587,588],{"class":404}," ==",[383,590,422],{"class":393},[383,592,425],{"class":404},[383,594,595],{"class":393},"j",[383,597,598],{"class":404},"]:\n",[383,600,602,605,607],{"class":385,"line":601},4,[383,603,604],{"class":393},"            gevonden ",[383,606,455],{"class":404},[383,608,609],{"class":404}," True\n",[371,611,612],{"v-slot:java":373},[375,613,615],{"className":436,"code":614,"language":438,"meta":373,"style":373},"for (int i = 0; i \u003C n; i++) {\n    for (int j = i + 1; j \u003C n; j++) {\n        if (a[i] == a[j]) {\n            gevonden = true;\n        }\n    }\n}\n",[46,616,617,647,682,709,718,724,730],{"__ignoreMap":373},[383,618,619,621,623,625,627,629,631,633,635,637,639,641,643,645],{"class":385,"line":386},[383,620,390],{"class":389},[383,622,17],{"class":404},[383,624,450],{"class":449},[383,626,394],{"class":393},[383,628,455],{"class":404},[383,630,459],{"class":458},[383,632,462],{"class":404},[383,634,394],{"class":393},[383,636,467],{"class":404},[383,638,470],{"class":393},[383,640,462],{"class":404},[383,642,475],{"class":393},[383,644,478],{"class":404},[383,646,481],{"class":404},[383,648,649,651,653,655,657,659,661,663,665,667,669,671,673,675,678,680],{"class":385,"line":413},[383,650,546],{"class":389},[383,652,17],{"class":404},[383,654,450],{"class":449},[383,656,549],{"class":393},[383,658,455],{"class":404},[383,660,394],{"class":393},[383,662,561],{"class":404},[383,664,564],{"class":458},[383,666,462],{"class":404},[383,668,549],{"class":393},[383,670,467],{"class":404},[383,672,470],{"class":393},[383,674,462],{"class":404},[383,676,677],{"class":393}," j",[383,679,478],{"class":404},[383,681,481],{"class":404},[383,683,684,686,688,690,692,694,696,698,700,702,704,707],{"class":385,"line":499},[383,685,576],{"class":389},[383,687,17],{"class":404},[383,689,27],{"class":393},[383,691,425],{"class":404},[383,693,428],{"class":393},[383,695,585],{"class":404},[383,697,588],{"class":404},[383,699,422],{"class":393},[383,701,425],{"class":404},[383,703,595],{"class":393},[383,705,706],{"class":404},"])",[383,708,481],{"class":404},[383,710,711,713,715],{"class":385,"line":601},[383,712,604],{"class":393},[383,714,455],{"class":404},[383,716,717],{"class":404}," true;\n",[383,719,721],{"class":385,"line":720},5,[383,722,723],{"class":404},"        }\n",[383,725,727],{"class":385,"line":726},6,[383,728,729],{"class":404},"    }\n",[383,731,733],{"class":385,"line":732},7,[383,734,502],{"class":404},[10,736,737,738,741,742,745,746,135,749,752],{},"Voor ",[46,739,740],{},"i = 0"," draait de binnenste lus ",[46,743,744],{},"n-1"," keer, voor ",[46,747,748],{},"i = 1",[46,750,751],{},"n-2"," keer, enzovoort tot 0. Samen:",[10,754,755],{},[46,756,757],{},"(n-1) + (n-2) + … + 1 + 0 = n(n-1)\u002F2",[10,759,760,761,764,765,767,768,770,771,775],{},"Bij ",[46,762,763],{},"n = 16"," zijn dat 120 vergelijkingen, bij ",[46,766,169],{}," precies 499.500. Constante (½) weg,\ndominante term (",[46,769,111],{},") houden: ",[14,772,773],{},[46,774,107],{},". Dat de binnenste lus \"maar half zo lang\" is, verandert de\nklasse niet.",[363,777,779],{"id":778},"gehalveerde-of-verdubbelde-teller","Gehalveerde of verdubbelde teller",[368,781,782,828],{},[371,783,784],{"v-slot:python":373},[375,785,787],{"className":377,"code":786,"language":379,"meta":373,"style":373},"i = n\nwhile i > 0:\n    i \u002F\u002F= 2        # i wordt telkens gehalveerd\n",[46,788,789,798,813],{"__ignoreMap":373},[383,790,791,793,795],{"class":385,"line":386},[383,792,558],{"class":393},[383,794,455],{"class":404},[383,796,797],{"class":393}," n\n",[383,799,800,803,805,808,810],{"class":385,"line":413},[383,801,802],{"class":389},"while",[383,804,394],{"class":393},[383,806,807],{"class":404},">",[383,809,459],{"class":458},[383,811,812],{"class":404},":\n",[383,814,815,818,821,824],{"class":385,"line":499},[383,816,817],{"class":393},"    i ",[383,819,820],{"class":404},"\u002F\u002F=",[383,822,823],{"class":458}," 2",[383,825,827],{"class":826},"sHwdD","        # i wordt telkens gehalveerd\n",[371,829,830],{"v-slot:java":373},[375,831,833],{"className":436,"code":832,"language":438,"meta":373,"style":373},"int i = n;\nwhile (i > 0) {\n    i \u002F= 2;        \u002F\u002F i wordt telkens gehalveerd (integerdeling)\n}\n",[46,834,835,848,865,879],{"__ignoreMap":373},[383,836,837,839,841,843,845],{"class":385,"line":386},[383,838,450],{"class":449},[383,840,394],{"class":393},[383,842,455],{"class":404},[383,844,470],{"class":393},[383,846,847],{"class":404},";\n",[383,849,850,852,854,856,858,860,863],{"class":385,"line":413},[383,851,802],{"class":389},[383,853,17],{"class":404},[383,855,558],{"class":393},[383,857,807],{"class":404},[383,859,459],{"class":458},[383,861,862],{"class":404},")",[383,864,481],{"class":404},[383,866,867,869,872,874,876],{"class":385,"line":499},[383,868,817],{"class":393},[383,870,871],{"class":404},"\u002F=",[383,873,823],{"class":458},[383,875,462],{"class":404},[383,877,878],{"class":826},"        \u002F\u002F i wordt telkens gehalveerd (integerdeling)\n",[383,880,881],{"class":385,"line":601},[383,882,502],{"class":404},[10,884,760,885,887,888,890,891,70,893,149],{},[46,886,763],{}," neemt ",[46,889,428],{}," de waarden 16, 8, 4, 2, 1 aan: 5 iteraties. Elke stap halveert het werk,\ndus het aantal stappen is ongeveer ",[46,892,190],{},[14,894,895],{},[46,896,213],{},[10,898,899],{},"Hetzelfde geldt voor een teller die verdubbelt:",[368,901,902,942],{},[371,903,904],{"v-slot:python":373},[375,905,907],{"className":377,"code":906,"language":379,"meta":373,"style":373},"i = 1\nwhile i \u003C n:\n    i *= 2         # 1, 2, 4, 8, ... tot n\n",[46,908,909,918,930],{"__ignoreMap":373},[383,910,911,913,915],{"class":385,"line":386},[383,912,558],{"class":393},[383,914,455],{"class":404},[383,916,917],{"class":458}," 1\n",[383,919,920,922,924,926,928],{"class":385,"line":413},[383,921,802],{"class":389},[383,923,394],{"class":393},[383,925,467],{"class":404},[383,927,470],{"class":393},[383,929,812],{"class":404},[383,931,932,934,937,939],{"class":385,"line":499},[383,933,817],{"class":393},[383,935,936],{"class":404},"*=",[383,938,823],{"class":458},[383,940,941],{"class":826},"         # 1, 2, 4, 8, ... tot n\n",[371,943,944],{"v-slot:java":373},[375,945,947],{"className":436,"code":946,"language":438,"meta":373,"style":373},"int i = 1;\nwhile (i \u003C n) {\n    i *= 2;        \u002F\u002F 1, 2, 4, 8, ... tot n\n}\n",[46,948,949,961,977,990],{"__ignoreMap":373},[383,950,951,953,955,957,959],{"class":385,"line":386},[383,952,450],{"class":449},[383,954,394],{"class":393},[383,956,455],{"class":404},[383,958,564],{"class":458},[383,960,847],{"class":404},[383,962,963,965,967,969,971,973,975],{"class":385,"line":413},[383,964,802],{"class":389},[383,966,17],{"class":404},[383,968,558],{"class":393},[383,970,467],{"class":404},[383,972,470],{"class":393},[383,974,862],{"class":404},[383,976,481],{"class":404},[383,978,979,981,983,985,987],{"class":385,"line":499},[383,980,817],{"class":393},[383,982,936],{"class":404},[383,984,823],{"class":458},[383,986,462],{"class":404},[383,988,989],{"class":826},"        \u002F\u002F 1, 2, 4, 8, ... tot n\n",[383,991,992],{"class":385,"line":601},[383,993,502],{"class":404},[225,995,996,1009],{},[228,997,998],{},[231,999,1000,1003,1005,1007],{},[234,1001,1002],{},"Lus",[234,1004,763],{},[234,1006,169],{},[234,1008,236],{},[247,1010,1011,1031],{},[231,1012,1013,1022,1025,1027],{},[252,1014,1015,1018,1019,1021],{},[46,1016,1017],{},"i \u002F\u002F= 2"," vanaf ",[46,1020,48],{}," tot 0",[252,1023,1024],{},"5",[252,1026,286],{},[252,1028,1029],{},[46,1030,213],{},[231,1032,1033,1041,1044,1046],{},[252,1034,1035,1038,1039],{},[46,1036,1037],{},"i *= 2"," vanaf 1 tot ",[46,1040,48],{},[252,1042,1043],{},"4",[252,1045,286],{},[252,1047,1048],{},[46,1049,213],{},[10,1051,1052,1053,1056,1057,1060,1061,1063,1064,149],{},"Let op het verschil met ",[46,1054,1055],{},"i -= 2"," of ",[46,1058,1059],{},"i += 2",": dat zijn ",[46,1062,145],{}," stappen, dus gewoon ",[14,1065,1066],{},[46,1067,118],{},[363,1069,1071],{"id":1070},"sequentiële-stukken","Sequentiële stukken",[10,1073,1074],{},"Twee stukken code ná elkaar tel je op, en dan houd je de grootste:",[368,1076,1077,1162],{},[371,1078,1079],{"v-slot:python":373},[375,1080,1082],{"className":377,"code":1081,"language":379,"meta":373,"style":373},"for i in range(n):          # O(n)\n    totaal += a[i]\nfor i in range(n):          # O(n²)\n    for j in range(n):\n        paren += 1\n",[46,1083,1084,1104,1118,1137,1153],{"__ignoreMap":373},[383,1085,1086,1088,1090,1092,1094,1096,1098,1101],{"class":385,"line":386},[383,1087,390],{"class":389},[383,1089,394],{"class":393},[383,1091,397],{"class":389},[383,1093,401],{"class":400},[383,1095,405],{"class":404},[383,1097,48],{"class":400},[383,1099,1100],{"class":404},"):",[383,1102,1103],{"class":826},"          # O(n)\n",[383,1105,1106,1108,1110,1112,1114,1116],{"class":385,"line":413},[383,1107,416],{"class":393},[383,1109,419],{"class":404},[383,1111,422],{"class":393},[383,1113,425],{"class":404},[383,1115,428],{"class":393},[383,1117,431],{"class":404},[383,1119,1120,1122,1124,1126,1128,1130,1132,1134],{"class":385,"line":499},[383,1121,390],{"class":389},[383,1123,394],{"class":393},[383,1125,397],{"class":389},[383,1127,401],{"class":400},[383,1129,405],{"class":404},[383,1131,48],{"class":400},[383,1133,1100],{"class":404},[383,1135,1136],{"class":826},"          # O(n²)\n",[383,1138,1139,1141,1143,1145,1147,1149,1151],{"class":385,"line":601},[383,1140,546],{"class":389},[383,1142,549],{"class":393},[383,1144,397],{"class":389},[383,1146,401],{"class":400},[383,1148,405],{"class":404},[383,1150,48],{"class":400},[383,1152,410],{"class":404},[383,1154,1155,1158,1160],{"class":385,"line":720},[383,1156,1157],{"class":393},"        paren ",[383,1159,419],{"class":404},[383,1161,917],{"class":458},[371,1163,1164],{"v-slot:java":373},[375,1165,1167],{"className":436,"code":1166,"language":438,"meta":373,"style":373},"for (int i = 0; i \u003C n; i++) {          \u002F\u002F O(n)\n    totaal += a[i];\n}\nfor (int i = 0; i \u003C n; i++) {          \u002F\u002F O(n²)\n    for (int j = 0; j \u003C n; j++) {\n        paren++;\n    }\n}\n",[46,1168,1169,1203,1217,1221,1254,1284,1292,1296],{"__ignoreMap":373},[383,1170,1171,1173,1175,1177,1179,1181,1183,1185,1187,1189,1191,1193,1195,1197,1200],{"class":385,"line":386},[383,1172,390],{"class":389},[383,1174,17],{"class":404},[383,1176,450],{"class":449},[383,1178,394],{"class":393},[383,1180,455],{"class":404},[383,1182,459],{"class":458},[383,1184,462],{"class":404},[383,1186,394],{"class":393},[383,1188,467],{"class":404},[383,1190,470],{"class":393},[383,1192,462],{"class":404},[383,1194,475],{"class":393},[383,1196,478],{"class":404},[383,1198,1199],{"class":404}," {",[383,1201,1202],{"class":826},"          \u002F\u002F O(n)\n",[383,1204,1205,1207,1209,1211,1213,1215],{"class":385,"line":413},[383,1206,416],{"class":393},[383,1208,419],{"class":404},[383,1210,422],{"class":393},[383,1212,425],{"class":404},[383,1214,428],{"class":393},[383,1216,496],{"class":404},[383,1218,1219],{"class":385,"line":499},[383,1220,502],{"class":404},[383,1222,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251],{"class":385,"line":601},[383,1224,390],{"class":389},[383,1226,17],{"class":404},[383,1228,450],{"class":449},[383,1230,394],{"class":393},[383,1232,455],{"class":404},[383,1234,459],{"class":458},[383,1236,462],{"class":404},[383,1238,394],{"class":393},[383,1240,467],{"class":404},[383,1242,470],{"class":393},[383,1244,462],{"class":404},[383,1246,475],{"class":393},[383,1248,478],{"class":404},[383,1250,1199],{"class":404},[383,1252,1253],{"class":826},"          \u002F\u002F O(n²)\n",[383,1255,1256,1258,1260,1262,1264,1266,1268,1270,1272,1274,1276,1278,1280,1282],{"class":385,"line":720},[383,1257,546],{"class":389},[383,1259,17],{"class":404},[383,1261,450],{"class":449},[383,1263,549],{"class":393},[383,1265,455],{"class":404},[383,1267,459],{"class":458},[383,1269,462],{"class":404},[383,1271,549],{"class":393},[383,1273,467],{"class":404},[383,1275,470],{"class":393},[383,1277,462],{"class":404},[383,1279,677],{"class":393},[383,1281,478],{"class":404},[383,1283,481],{"class":404},[383,1285,1286,1289],{"class":385,"line":726},[383,1287,1288],{"class":393},"        paren",[383,1290,1291],{"class":404},"++;\n",[383,1293,1294],{"class":385,"line":732},[383,1295,729],{"class":404},[383,1297,1299],{"class":385,"line":1298},8,[383,1300,502],{"class":404},[10,1302,1303,1306,1307,1310,1311,149],{},[46,1304,1305],{},"O(n) + O(n²) = O(n²)",". Nesten ",[14,1308,1309],{},"vermenigvuldigt",", achter elkaar zetten ",[14,1312,1313],{},"telt op",[363,1315,1317],{"id":1316},"een-lus-met-een-logaritmische-binnenlus","Een lus met een logaritmische binnenlus",[368,1319,1320,1375],{},[371,1321,1322],{"v-slot:python":373},[375,1323,1325],{"className":377,"code":1324,"language":379,"meta":373,"style":373},"for i in range(n):\n    j = 1\n    while j \u003C n:\n        j *= 2\n",[46,1326,1327,1343,1352,1365],{"__ignoreMap":373},[383,1328,1329,1331,1333,1335,1337,1339,1341],{"class":385,"line":386},[383,1330,390],{"class":389},[383,1332,394],{"class":393},[383,1334,397],{"class":389},[383,1336,401],{"class":400},[383,1338,405],{"class":404},[383,1340,48],{"class":400},[383,1342,410],{"class":404},[383,1344,1345,1348,1350],{"class":385,"line":413},[383,1346,1347],{"class":393},"    j ",[383,1349,455],{"class":404},[383,1351,917],{"class":458},[383,1353,1354,1357,1359,1361,1363],{"class":385,"line":499},[383,1355,1356],{"class":389},"    while",[383,1358,549],{"class":393},[383,1360,467],{"class":404},[383,1362,470],{"class":393},[383,1364,812],{"class":404},[383,1366,1367,1370,1372],{"class":385,"line":601},[383,1368,1369],{"class":393},"        j ",[383,1371,936],{"class":404},[383,1373,1374],{"class":458}," 2\n",[371,1376,1377],{"v-slot:java":373},[375,1378,1380],{"className":436,"code":1379,"language":438,"meta":373,"style":373},"for (int i = 0; i \u003C n; i++) {\n    int j = 1;\n    while (j \u003C n) {\n        j *= 2;\n    }\n}\n",[46,1381,1382,1412,1425,1442,1452,1456],{"__ignoreMap":373},[383,1383,1384,1386,1388,1390,1392,1394,1396,1398,1400,1402,1404,1406,1408,1410],{"class":385,"line":386},[383,1385,390],{"class":389},[383,1387,17],{"class":404},[383,1389,450],{"class":449},[383,1391,394],{"class":393},[383,1393,455],{"class":404},[383,1395,459],{"class":458},[383,1397,462],{"class":404},[383,1399,394],{"class":393},[383,1401,467],{"class":404},[383,1403,470],{"class":393},[383,1405,462],{"class":404},[383,1407,475],{"class":393},[383,1409,478],{"class":404},[383,1411,481],{"class":404},[383,1413,1414,1417,1419,1421,1423],{"class":385,"line":413},[383,1415,1416],{"class":449},"    int",[383,1418,549],{"class":393},[383,1420,455],{"class":404},[383,1422,564],{"class":458},[383,1424,847],{"class":404},[383,1426,1427,1429,1431,1434,1436,1438,1440],{"class":385,"line":499},[383,1428,1356],{"class":389},[383,1430,17],{"class":404},[383,1432,1433],{"class":393},"j ",[383,1435,467],{"class":404},[383,1437,470],{"class":393},[383,1439,862],{"class":404},[383,1441,481],{"class":404},[383,1443,1444,1446,1448,1450],{"class":385,"line":601},[383,1445,1369],{"class":393},[383,1447,936],{"class":404},[383,1449,823],{"class":458},[383,1451,847],{"class":404},[383,1453,1454],{"class":385,"line":720},[383,1455,729],{"class":404},[383,1457,1458],{"class":385,"line":726},[383,1459,502],{"class":404},[10,1461,1462,1463,1465,1466,508,1468,149],{},"De buitenste lus draait ",[46,1464,48],{}," keer, de binnenste elke keer ",[46,1467,194],{},[14,1469,1470],{},[46,1471,218],{},[38,1473,1475],{"id":1474},"recursie-en-recurrente-betrekkingen","Recursie en recurrente betrekkingen",[10,1477,1478,1479,1482,1483,1486,1487,1489,1490,1493],{},"Bij een recursieve functie schrijf je de looptijd op als een ",[14,1480,1481],{},"recurrente betrekking","\n(",[19,1484,1485],{},"recurrence relation","): een formule die ",[46,1488,52],{}," uitdrukt in ",[46,1491,1492],{},"T"," van een kleinere invoer.",[10,1495,1496],{},"Een paar standaardgevallen:",[225,1498,1499,1512],{},[228,1500,1501],{},[231,1502,1503,1506,1509],{},[234,1504,1505],{},"Code-patroon",[234,1507,1508],{},"Recurrente betrekking",[234,1510,1511],{},"Oplossing",[247,1513,1514,1531,1548,1564,1578],{},[231,1515,1516,1522,1527],{},[252,1517,1518,1519,1521],{},"één recursieve aanroep op ",[46,1520,744],{},", constant werk",[252,1523,1524],{},[46,1525,1526],{},"T(n) = T(n-1) + 1",[252,1528,1529],{},[46,1530,118],{},[231,1532,1533,1539,1544],{},[252,1534,1535,1536,1538],{},"één aanroep op ",[46,1537,744],{},", lineair werk (bv. een lus)",[252,1540,1541],{},[46,1542,1543],{},"T(n) = T(n-1) + n",[252,1545,1546],{},[46,1547,107],{},[231,1549,1550,1555,1560],{},[252,1551,1552,1553,862],{},"één aanroep op de helft, constant werk (",[27,1554,283],{"href":282},[252,1556,1557],{},[46,1558,1559],{},"T(n) = T(n\u002F2) + 1",[252,1561,1562],{},[46,1563,213],{},[231,1565,1566,1569,1574],{},[252,1567,1568],{},"twee aanroepen op de helft, lineair werk (merge sort)",[252,1570,1571],{},[46,1572,1573],{},"T(n) = 2T(n\u002F2) + n",[252,1575,1576],{},[46,1577,218],{},[231,1579,1580,1586,1591],{},[252,1581,1582,1583,1585],{},"twee aanroepen op ",[46,1584,744],{}," (naïeve Fibonacci)",[252,1587,1588],{},[46,1589,1590],{},"T(n) = 2T(n-1) + 1",[252,1592,1593],{},[46,1594,223],{},[10,1596,1597],{},"Een voorbeeld: de som van een lijst, recursief.",[368,1599,1600,1744],{},[371,1601,1602],{"v-slot:python":373},[375,1603,1605],{"className":377,"code":1604,"language":379,"meta":373,"style":373},"def som(a, n):\n    # basisgeval: een lege lijst heeft som 0\n    if n == 0:\n        return 0\n    # één recursieve aanroep op n-1, plus constant werk\n    return som(a, n - 1) + a[n - 1]\n\nprint(som([4, 1, 7, 3], 4))  # 15\n",[46,1606,1607,1626,1631,1646,1654,1659,1697,1703],{"__ignoreMap":373},[383,1608,1609,1612,1615,1617,1620,1622,1624],{"class":385,"line":386},[383,1610,1611],{"class":449},"def",[383,1613,1614],{"class":400}," som",[383,1616,405],{"class":404},[383,1618,27],{"class":1619},"sHdIc",[383,1621,567],{"class":404},[383,1623,470],{"class":1619},[383,1625,410],{"class":404},[383,1627,1628],{"class":385,"line":413},[383,1629,1630],{"class":826},"    # basisgeval: een lege lijst heeft som 0\n",[383,1632,1633,1636,1639,1642,1644],{"class":385,"line":499},[383,1634,1635],{"class":389},"    if",[383,1637,1638],{"class":393}," n ",[383,1640,1641],{"class":404},"==",[383,1643,459],{"class":458},[383,1645,812],{"class":404},[383,1647,1648,1651],{"class":385,"line":601},[383,1649,1650],{"class":389},"        return",[383,1652,1653],{"class":458}," 0\n",[383,1655,1656],{"class":385,"line":720},[383,1657,1658],{"class":826},"    # één recursieve aanroep op n-1, plus constant werk\n",[383,1660,1661,1664,1666,1668,1670,1672,1674,1677,1679,1681,1684,1686,1688,1691,1693,1695],{"class":385,"line":726},[383,1662,1663],{"class":389},"    return",[383,1665,1614],{"class":400},[383,1667,405],{"class":404},[383,1669,27],{"class":400},[383,1671,567],{"class":404},[383,1673,1638],{"class":400},[383,1675,1676],{"class":404},"-",[383,1678,564],{"class":458},[383,1680,862],{"class":404},[383,1682,1683],{"class":404}," +",[383,1685,422],{"class":393},[383,1687,425],{"class":404},[383,1689,1690],{"class":393},"n ",[383,1692,1676],{"class":404},[383,1694,564],{"class":458},[383,1696,431],{"class":404},[383,1698,1699],{"class":385,"line":732},[383,1700,1702],{"emptyLinePlaceholder":1701},true,"\n",[383,1704,1705,1708,1710,1713,1716,1718,1720,1722,1724,1727,1729,1732,1735,1738,1741],{"class":385,"line":1298},[383,1706,1707],{"class":400},"print",[383,1709,405],{"class":404},[383,1711,1712],{"class":400},"som",[383,1714,1715],{"class":404},"([",[383,1717,1043],{"class":458},[383,1719,567],{"class":404},[383,1721,564],{"class":458},[383,1723,567],{"class":404},[383,1725,1726],{"class":458}," 7",[383,1728,567],{"class":404},[383,1730,1731],{"class":458}," 3",[383,1733,1734],{"class":404},"],",[383,1736,1737],{"class":458}," 4",[383,1739,1740],{"class":404},"))",[383,1742,1743],{"class":826},"  # 15\n",[371,1745,1746],{"v-slot:java":373},[375,1747,1749],{"className":436,"code":1748,"language":438,"meta":373,"style":373},"static int som(int[] a, int n) {\n    \u002F\u002F basisgeval: een lege lijst heeft som 0\n    if (n == 0) {\n        return 0;\n    }\n    \u002F\u002F één recursieve aanroep op n-1, plus constant werk\n    return som(a, n - 1) + a[n - 1];\n}\n",[46,1750,1751,1780,1785,1801,1809,1813,1818,1852],{"__ignoreMap":373},[383,1752,1753,1756,1759,1761,1763,1765,1768,1770,1772,1774,1776,1778],{"class":385,"line":386},[383,1754,1755],{"class":449},"static",[383,1757,1758],{"class":449}," int",[383,1760,1614],{"class":400},[383,1762,405],{"class":404},[383,1764,450],{"class":449},[383,1766,1767],{"class":404},"[]",[383,1769,422],{"class":393},[383,1771,567],{"class":404},[383,1773,1758],{"class":449},[383,1775,470],{"class":393},[383,1777,862],{"class":404},[383,1779,481],{"class":404},[383,1781,1782],{"class":385,"line":413},[383,1783,1784],{"class":826},"    \u002F\u002F basisgeval: een lege lijst heeft som 0\n",[383,1786,1787,1789,1791,1793,1795,1797,1799],{"class":385,"line":499},[383,1788,1635],{"class":389},[383,1790,17],{"class":404},[383,1792,1690],{"class":393},[383,1794,1641],{"class":404},[383,1796,459],{"class":458},[383,1798,862],{"class":404},[383,1800,481],{"class":404},[383,1802,1803,1805,1807],{"class":385,"line":601},[383,1804,1650],{"class":389},[383,1806,459],{"class":458},[383,1808,847],{"class":404},[383,1810,1811],{"class":385,"line":720},[383,1812,729],{"class":404},[383,1814,1815],{"class":385,"line":726},[383,1816,1817],{"class":826},"    \u002F\u002F één recursieve aanroep op n-1, plus constant werk\n",[383,1819,1820,1822,1824,1826,1828,1830,1832,1834,1836,1838,1840,1842,1844,1846,1848,1850],{"class":385,"line":732},[383,1821,1663],{"class":389},[383,1823,1614],{"class":400},[383,1825,405],{"class":404},[383,1827,27],{"class":393},[383,1829,567],{"class":404},[383,1831,1638],{"class":393},[383,1833,1676],{"class":404},[383,1835,564],{"class":458},[383,1837,862],{"class":404},[383,1839,1683],{"class":404},[383,1841,422],{"class":393},[383,1843,425],{"class":404},[383,1845,1690],{"class":393},[383,1847,1676],{"class":404},[383,1849,564],{"class":458},[383,1851,496],{"class":404},[383,1853,1854],{"class":385,"line":1298},[383,1855,502],{"class":404},[10,1857,1858,1859,1861,1862,1865,1866,149],{},"Dit is ",[46,1860,1526],{},". Uitschrijven (\"ontrollen\") laat zien wat er gebeurt:\n",[46,1863,1864],{},"T(n) = T(n-2) + 2 = T(n-3) + 3 = … = T(0) + n",", dus ",[14,1867,1868],{},[46,1869,118],{},[38,1871,1873],{"id":1872},"de-mastermethode","De mastermethode",[10,1875,1876,1877,17,1880,1883],{},"Voor recursies die het probleem in gelijke stukken delen, is er een kant-en-klaar recept: de\n",[14,1878,1879],{},"mastermethode",[19,1881,1882],{},"master theorem","). Hij werkt voor betrekkingen van de vorm",[10,1885,1886],{},[46,1887,1888],{},"T(n) = a · T(n\u002Fb) + n^d",[10,1890,1891,1892,1895,1896,1899,1900,1903,1904,1906,1907,1910],{},"met ",[46,1893,1894],{},"a ≥ 1"," deelproblemen, elk van grootte ",[46,1897,1898],{},"n\u002Fb",", en ",[46,1901,1902],{},"n^d"," werk buiten de recursie (splitsen en\nsamenvoegen). Je vergelijkt ",[46,1905,27],{}," met ",[46,1908,1909],{},"b^d",":",[225,1912,1913,1928],{},[228,1914,1915],{},[231,1916,1917,1920,1923,1925],{},[234,1918,1919],{},"Geval",[234,1921,1922],{},"Voorwaarde",[234,1924,1511],{},[234,1926,1927],{},"Wat domineert",[247,1929,1930,1947,1965],{},[231,1931,1932,1934,1939,1944],{},[252,1933,268],{},[252,1935,1936],{},[46,1937,1938],{},"a \u003C b^d",[252,1940,1941],{},[46,1942,1943],{},"Θ(n^d)",[252,1945,1946],{},"het werk bovenaan de boom",[231,1948,1949,1952,1957,1962],{},[252,1950,1951],{},"2",[252,1953,1954],{},[46,1955,1956],{},"a = b^d",[252,1958,1959],{},[46,1960,1961],{},"Θ(n^d log n)",[252,1963,1964],{},"elk niveau evenveel werk",[231,1966,1967,1970,1975,1980],{},[252,1968,1969],{},"3",[252,1971,1972],{},[46,1973,1974],{},"a > b^d",[252,1976,1977],{},[46,1978,1979],{},"Θ(n^(log_b a))",[252,1981,1982],{},"de bladeren onderaan",[10,1984,1985],{},"Uitgewerkt:",[225,1987,1988,2010],{},[228,1989,1990],{},[231,1991,1992,1995,1997,2000,2003,2005,2008],{},[234,1993,1994],{},"Betrekking",[234,1996,27],{},[234,1998,1999],{},"b",[234,2001,2002],{},"d",[234,2004,1909],{},[234,2006,2007],{},"Vergelijking",[234,2009,1511],{},[247,2011,2012,2034,2057,2079,2102],{},[231,2013,2014,2019,2021,2023,2025,2027,2029],{},[252,2015,2016,2018],{},[46,2017,1573],{}," (merge sort)",[252,2020,1951],{},[252,2022,1951],{},[252,2024,268],{},[252,2026,1951],{},[252,2028,1956],{},[252,2030,2031],{},[46,2032,2033],{},"Θ(n log n)",[231,2035,2036,2041,2043,2045,2048,2050,2052],{},[252,2037,2038,2040],{},[46,2039,1559],{}," (binair zoeken)",[252,2042,268],{},[252,2044,1951],{},[252,2046,2047],{},"0",[252,2049,268],{},[252,2051,1956],{},[252,2053,2054],{},[46,2055,2056],{},"Θ(log n)",[231,2058,2059,2064,2066,2068,2070,2072,2074],{},[252,2060,2061],{},[46,2062,2063],{},"T(n) = 2T(n\u002F2) + n²",[252,2065,1951],{},[252,2067,1951],{},[252,2069,1951],{},[252,2071,1043],{},[252,2073,1938],{},[252,2075,2076],{},[46,2077,2078],{},"Θ(n²)",[231,2080,2081,2086,2089,2091,2093,2095,2097],{},[252,2082,2083],{},[46,2084,2085],{},"T(n) = 8T(n\u002F2) + n²",[252,2087,2088],{},"8",[252,2090,1951],{},[252,2092,1951],{},[252,2094,1043],{},[252,2096,1974],{},[252,2098,2099],{},[46,2100,2101],{},"Θ(n^(log₂ 8)) = Θ(n³)",[231,2103,2104,2109,2111,2113,2115,2117,2119],{},[252,2105,2106],{},[46,2107,2108],{},"T(n) = 4T(n\u002F2) + n",[252,2110,1043],{},[252,2112,1951],{},[252,2114,268],{},[252,2116,1951],{},[252,2118,1974],{},[252,2120,2121],{},[46,2122,2123],{},"Θ(n^(log₂ 4)) = Θ(n²)",[10,2125,2126,2127,1865,2130,187,2133,149],{},"Let op het tweede voorbeeld: constant werk is ",[46,2128,2129],{},"n⁰",[46,2131,2132],{},"d = 0",[46,2134,2135],{},"b^d = 1",[10,2137,2138,2139,2141],{},"De intuïtie: teken de recursieboom. In geval 1 doet de wortel het meeste werk, in geval 3 zitten de\nkosten in de enorme hoeveelheid bladeren, en in geval 2 kost elk van de ",[46,2140,194],{}," niveaus evenveel.",[10,2143,2144,2145,2148,2149,2151,2152,2154],{},"De mastermethode werkt ",[14,2146,2147],{},"niet"," voor ",[46,2150,1543],{},": daar wordt ",[46,2153,48],{}," niet gedeeld maar met één\nverminderd. Die los je op door te ontrollen, zoals hierboven.",[38,2156,2158],{"id":2157},"complexiteit-in-één-tabel","Complexiteit in één tabel",[225,2160,2161,2170],{},[228,2162,2163],{},[231,2164,2165,2168],{},[234,2166,2167],{},"Situatie",[234,2169,16],{},[247,2171,2172,2183,2192,2201,2216,2227,2235],{},[231,2173,2174,2179],{},[252,2175,2176,2177],{},"vaste hoeveelheid werk, onafhankelijk van ",[46,2178,48],{},[252,2180,2181],{},[46,2182,209],{},[231,2184,2185,2188],{},[252,2186,2187],{},"teller halveert of verdubbelt",[252,2189,2190],{},[46,2191,213],{},[231,2193,2194,2197],{},[252,2195,2196],{},"één lus over alle elementen",[252,2198,2199],{},[46,2200,118],{},[231,2202,2203,2212],{},[252,2204,2205,2206,2208,2209,2211],{},"lus van ",[46,2207,48],{}," met daarbinnen een ",[46,2210,194],{},"-lus",[252,2213,2214],{},[46,2215,218],{},[231,2217,2218,2223],{},[252,2219,2220,2221],{},"twee geneste lussen over ",[46,2222,48],{},[252,2224,2225],{},[46,2226,107],{},[231,2228,2229,2232],{},[252,2230,2231],{},"twee lussen ná elkaar",[252,2233,2234],{},"de grootste van de twee",[231,2236,2237,2240],{},[252,2238,2239],{},"alle deelverzamelingen proberen",[252,2241,2242],{},[46,2243,223],{},[38,2245,2247],{"id":2246},"veelgemaakte-fouten-op-het-tentamen","Veelgemaakte fouten op het tentamen",[128,2249,2250,2264,2270,2278,2300],{},[58,2251,2252,2258,2259,2261,2262,149],{},[14,2253,2254,2255,2257],{},"Elke geneste lus is ",[46,2256,107],{}," noemen."," Kijk naar wat de binnenste lus doet. Halveert de teller,\ndan is het ",[46,2260,218],{},". Loopt de binnenste lus een vast aantal keer (bijvoorbeeld 3), dan is het\ngewoon ",[46,2263,118],{},[58,2265,2266,2269],{},[14,2267,2268],{},"Optellen en vermenigvuldigen door elkaar halen."," Lussen ná elkaar: optellen, de grootste\nhouden. Lussen ín elkaar: vermenigvuldigen.",[58,2271,2272,135,2275,2277],{},[14,2273,2274],{},"Een te ruime grens geven.",[46,2276,107],{}," voor een enkele lus is technisch niet fout, maar levert op het\ntentamen geen punten op. Geef de strakke grens.",[58,2279,2280,2285,2286,2288,2289,2292,2293,1906,2295,2297,2298,149],{},[14,2281,2282,2284],{},[46,2283,2002],{}," verkeerd aflezen bij de mastermethode."," Constant werk betekent ",[46,2287,2132],{},", niet ",[46,2290,2291],{},"d = 1",". En\nvergelijk ",[46,2294,27],{},[46,2296,1909],{},", niet met ",[46,2299,1999],{},[58,2301,2302,2308,2309,2311],{},[14,2303,2304,2305,149],{},"De mastermethode toepassen op ",[46,2306,2307],{},"T(n-1)"," Alleen bij delen door ",[46,2310,1999],{}," werkt het recept; bij\naftrekken ontrol je de recursie.",[38,2313,2315],{"id":2314},"samenvatting","Samenvatting",[55,2317,2318,2327,2338,2343,2354],{},[58,2319,2320,2321,1906,2324,2326],{},"Big-O beschrijft hoe de looptijd ",[14,2322,2323],{},"groeit",[46,2325,48],{},"; constanten en lagere termen vallen weg.",[58,2328,2329,2330,2333,2334,2288,2336,149],{},"Op het tentamen geef je de ",[14,2331,2332],{},"strakke"," grens: een enkele lus is ",[46,2335,118],{},[46,2337,107],{},[58,2339,2340,2341,149],{},"Geneste lussen vermenigvuldig je, opeenvolgende lussen tel je op; een halverende teller geeft ",[46,2342,194],{},[58,2344,2345,2346,2349,2350,1906,2352,149],{},"Recursie schrijf je als recurrente betrekking; bij ",[46,2347,2348],{},"T(n) = aT(n\u002Fb) + n^d"," vergelijk je ",[46,2351,27],{},[46,2353,1909],{},[58,2355,2356,2357,210,2359,210,2361,210,2363,210,2365,210,2367,149],{},"Volgorde om te onthouden: ",[46,2358,209],{},[46,2360,213],{},[46,2362,118],{},[46,2364,218],{},[46,2366,107],{},[46,2368,223],{},[2370,2371,2372],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}",{"title":373,"searchDepth":413,"depth":413,"links":2374},[2375,2376,2377,2378,2385,2386,2387,2388,2389],{"id":40,"depth":413,"text":41},{"id":122,"depth":413,"text":123},{"id":200,"depth":413,"text":201},{"id":357,"depth":413,"text":358,"children":2379},[2380,2381,2382,2383,2384],{"id":365,"depth":499,"text":366},{"id":515,"depth":499,"text":516},{"id":778,"depth":499,"text":779},{"id":1070,"depth":499,"text":1071},{"id":1316,"depth":499,"text":1317},{"id":1474,"depth":413,"text":1475},{"id":1872,"depth":413,"text":1873},{"id":2157,"depth":413,"text":2158},{"id":2246,"depth":413,"text":2247},{"id":2314,"depth":413,"text":2315},"Big-O en Θ zonder wiskundejargon: rekenregels, lussen tellen, recurrente betrekkingen en de mastermethode, met uitgewerkte voorbeelden en tentamenvalkuilen.","md","i-lucide-gauge",{},"\u002Fpracticely-dsa\u002Fcomplexiteit",{"title":5,"description":2390},"practicely-dsa\u002Fcomplexiteit","complexiteit","FRnTzgDnOlupyMzKYCNsrD-F9LNSzcJzhvVlXgf7zgI",{"prev":2400,"next":2401},null,{"id":2402,"title":2403,"body":2404,"description":6363,"extension":2391,"icon":6364,"meta":6365,"navigation":1701,"order":413,"path":6366,"seo":6367,"stem":6368,"topic":30,"__hash__":6369},"practicelyDsa\u002Fpracticely-dsa\u002Fsorteren.md","Sorteeralgoritmes uitgelegd: van insertion sort tot quicksort",{"type":7,"value":2405,"toc":6351},[2406,2413,2423,2427,2430,2526,2532,2535,2540,2635,2641,3018,3034,3037,3042,3162,3183,3615,3624,3627,3632,3710,3738,3744,4118,4122,4140,4278,4285,5034,5049,5053,5069,5077,5086,5095,5278,5293,6016,6035,6039,6042,6065,6067,6215,6229,6231,6296,6298,6348],[10,2407,2408,2409,2412],{},"Sorteren is het bekendste probleem uit de informatica: zet een rij getallen van klein naar groot. Je\ngebruikt in de praktijk bijna altijd de ingebouwde ",[46,2410,2411],{},"sort()",", maar op het tentamen moet je laten zien\ndat je snapt wat er onder de motorkap gebeurt. De klassieke vraag is: \"hoe ziet de array eruit na\nronde 2?\" En in sollicitatiegesprekken is \"waarom is quicksort in het slechtste geval kwadratisch?\"\neen vaste kandidaat.",[10,2414,2415,2416,2419,2420,149],{},"Op deze pagina behandelen we vijf algoritmes. Bij elk staat een uitgewerkt voorbeeld met de toestand\n",[14,2417,2418],{},"na elke ronde",", precies zoals de oefeningen eronder het vragen. Ken je Big-O nog niet goed, lees\ndan eerst ",[27,2421,2397],{"href":2422},"\u002Fpracticely\u002Fdsa\u002Fcomplexiteit",[38,2424,2426],{"id":2425},"wat-betekent-na-ronde-k","Wat betekent \"na ronde k\"?",[10,2428,2429],{},"Een traceervraag heeft alleen één goed antwoord als iedereen dezelfde variant bedoelt. Op Practicely\ngelden deze afspraken (rondes tellen vanaf 1, arrays zijn 0-geïndexeerd):",[225,2431,2432,2445],{},[228,2433,2434],{},[231,2435,2436,2439,2442],{},[234,2437,2438],{},"Algoritme",[234,2440,2441],{},"Eén ronde",[234,2443,2444],{},"Toestand na ronde k",[247,2446,2447,2464,2490,2507],{},[231,2448,2449,2452,2458],{},[252,2450,2451],{},"Insertion sort",[252,2453,2454,2457],{},[46,2455,2456],{},"a[k]"," wordt ingevoegd in het gesorteerde deel links ervan",[252,2459,2460,2463],{},[46,2461,2462],{},"a[0..k]"," gesorteerd, de rest onveranderd",[231,2465,2466,2469,2483],{},[252,2467,2468],{},"Selection sort",[252,2470,2471,2472,187,2475,2478,2479,2482],{},"zoek het minimum in ",[46,2473,2474],{},"a[k-1..n-1]",[14,2476,2477],{},"wissel"," het met ",[46,2480,2481],{},"a[k-1]",", ook als dat hetzelfde element is",[252,2484,2485,2486,2489],{},"de ",[46,2487,2488],{},"k"," kleinste staan gesorteerd vooraan",[231,2491,2492,2495,2502],{},[252,2493,2494],{},"Bubble sort",[252,2496,2497,2498,2501],{},"één volledige doorloop van links naar rechts, wissel buren als ",[46,2499,2500],{},"a[j] > a[j+1]",", geen vroegtijdige stop",[252,2503,2485,2504,2506],{},[46,2505,2488],{}," grootste staan gesorteerd achteraan",[231,2508,2509,2512,2519],{},[252,2510,2511],{},"Quicksort",[252,2513,2514,2515,2518],{},"Lomuto-partitie met het ",[14,2516,2517],{},"laatste"," element als pivot",[252,2520,2521,2522,2525],{},"de vraag gaat over de array na de ",[14,2523,2524],{},"eerste"," partitie",[10,2527,2528,2529,149],{},"In alle voorbeelden hieronder sorteren we dezelfde array: ",[46,2530,2531],{},"[5, 2, 4, 6, 1, 3]",[38,2533,2451],{"id":2534},"insertion-sort",[10,2536,2537,2539],{},[14,2538,2451],{}," (invoegend sorteren) werkt zoals je kaarten in je hand sorteert: je pakt de\nvolgende kaart en schuift hem naar links tot hij op zijn plek zit. Het deel links van de huidige\npositie is steeds al gesorteerd.",[225,2541,2542,2555],{},[228,2543,2544],{},[231,2545,2546,2549,2552],{},[234,2547,2548],{},"Ronde",[234,2550,2551],{},"Ingevoegd element",[234,2553,2554],{},"Array na de ronde",[247,2556,2557,2570,2583,2596,2609,2622],{},[231,2558,2559,2562,2565],{},[252,2560,2561],{},"start",[252,2563,2564],{},"–",[252,2566,2567],{},[46,2568,2569],{},"5, 2, 4, 6, 1, 3",[231,2571,2572,2574,2578],{},[252,2573,268],{},[252,2575,2576],{},[46,2577,1951],{},[252,2579,2580],{},[46,2581,2582],{},"2, 5, 4, 6, 1, 3",[231,2584,2585,2587,2591],{},[252,2586,1951],{},[252,2588,2589],{},[46,2590,1043],{},[252,2592,2593],{},[46,2594,2595],{},"2, 4, 5, 6, 1, 3",[231,2597,2598,2600,2605],{},[252,2599,1969],{},[252,2601,2602],{},[46,2603,2604],{},"6",[252,2606,2607],{},[46,2608,2595],{},[231,2610,2611,2613,2617],{},[252,2612,1043],{},[252,2614,2615],{},[46,2616,268],{},[252,2618,2619],{},[46,2620,2621],{},"1, 2, 4, 5, 6, 3",[231,2623,2624,2626,2630],{},[252,2625,1024],{},[252,2627,2628],{},[46,2629,1969],{},[252,2631,2632],{},[46,2633,2634],{},"1, 2, 3, 4, 5, 6",[10,2636,2637,2638,2640],{},"Let op ronde 3: ",[46,2639,2604],{}," is groter dan alles links ervan, dus er verandert niets. Dat telt wél als ronde.",[368,2642,2643,2813],{},[371,2644,2645],{"v-slot:python":373},[375,2646,2648],{"className":377,"code":2647,"language":379,"meta":373,"style":373},"def insertion_sort(a):\n    for k in range(1, len(a)):\n        x = a[k]\n        j = k - 1\n        # schuif grotere elementen één plek naar rechts\n        while j >= 0 and a[j] > x:\n            a[j + 1] = a[j]\n            j -= 1\n        a[j + 1] = x  # na ronde k is a[0..k] gesorteerd\n",[46,2649,2650,2663,2690,2705,2717,2722,2753,2779,2789],{"__ignoreMap":373},[383,2651,2652,2654,2657,2659,2661],{"class":385,"line":386},[383,2653,1611],{"class":449},[383,2655,2656],{"class":400}," insertion_sort",[383,2658,405],{"class":404},[383,2660,27],{"class":1619},[383,2662,410],{"class":404},[383,2664,2665,2667,2670,2672,2674,2676,2678,2680,2683,2685,2687],{"class":385,"line":413},[383,2666,546],{"class":389},[383,2668,2669],{"class":393}," k ",[383,2671,397],{"class":389},[383,2673,401],{"class":400},[383,2675,405],{"class":404},[383,2677,268],{"class":458},[383,2679,567],{"class":404},[383,2681,2682],{"class":400}," len",[383,2684,405],{"class":404},[383,2686,27],{"class":400},[383,2688,2689],{"class":404},")):\n",[383,2691,2692,2695,2697,2699,2701,2703],{"class":385,"line":499},[383,2693,2694],{"class":393},"        x ",[383,2696,455],{"class":404},[383,2698,422],{"class":393},[383,2700,425],{"class":404},[383,2702,2488],{"class":393},[383,2704,431],{"class":404},[383,2706,2707,2709,2711,2713,2715],{"class":385,"line":601},[383,2708,1369],{"class":393},[383,2710,455],{"class":404},[383,2712,2669],{"class":393},[383,2714,1676],{"class":404},[383,2716,917],{"class":458},[383,2718,2719],{"class":385,"line":720},[383,2720,2721],{"class":826},"        # schuif grotere elementen één plek naar rechts\n",[383,2723,2724,2727,2729,2732,2734,2737,2739,2741,2743,2745,2748,2751],{"class":385,"line":726},[383,2725,2726],{"class":389},"        while",[383,2728,549],{"class":393},[383,2730,2731],{"class":404},">=",[383,2733,459],{"class":458},[383,2735,2736],{"class":404}," and",[383,2738,422],{"class":393},[383,2740,425],{"class":404},[383,2742,595],{"class":393},[383,2744,585],{"class":404},[383,2746,2747],{"class":404}," >",[383,2749,2750],{"class":393}," x",[383,2752,812],{"class":404},[383,2754,2755,2758,2760,2762,2764,2766,2768,2771,2773,2775,2777],{"class":385,"line":732},[383,2756,2757],{"class":393},"            a",[383,2759,425],{"class":404},[383,2761,1433],{"class":393},[383,2763,561],{"class":404},[383,2765,564],{"class":458},[383,2767,585],{"class":404},[383,2769,2770],{"class":404}," =",[383,2772,422],{"class":393},[383,2774,425],{"class":404},[383,2776,595],{"class":393},[383,2778,431],{"class":404},[383,2780,2781,2784,2787],{"class":385,"line":1298},[383,2782,2783],{"class":393},"            j ",[383,2785,2786],{"class":404},"-=",[383,2788,917],{"class":458},[383,2790,2792,2795,2797,2799,2801,2803,2805,2807,2810],{"class":385,"line":2791},9,[383,2793,2794],{"class":393},"        a",[383,2796,425],{"class":404},[383,2798,1433],{"class":393},[383,2800,561],{"class":404},[383,2802,564],{"class":458},[383,2804,585],{"class":404},[383,2806,2770],{"class":404},[383,2808,2809],{"class":393}," x  ",[383,2811,2812],{"class":826},"# na ronde k is a[0..k] gesorteerd\n",[371,2814,2815],{"v-slot:java":373},[375,2816,2818],{"className":436,"code":2817,"language":438,"meta":373,"style":373},"static void insertionSort(int[] a) {\n    for (int k = 1; k \u003C a.length; k++) {\n        int x = a[k];\n        int j = k - 1;\n        \u002F\u002F schuif grotere elementen één plek naar rechts\n        while (j >= 0 && a[j] > x) {\n            a[j + 1] = a[j];\n            j--;\n        }\n        a[j + 1] = x; \u002F\u002F na ronde k is a[0..k] gesorteerd\n    }\n}\n",[46,2819,2820,2842,2878,2896,2912,2917,2948,2972,2980,2984,3008,3013],{"__ignoreMap":373},[383,2821,2822,2824,2827,2830,2832,2834,2836,2838,2840],{"class":385,"line":386},[383,2823,1755],{"class":449},[383,2825,2826],{"class":449}," void",[383,2828,2829],{"class":400}," insertionSort",[383,2831,405],{"class":404},[383,2833,450],{"class":449},[383,2835,1767],{"class":404},[383,2837,422],{"class":393},[383,2839,862],{"class":404},[383,2841,481],{"class":404},[383,2843,2844,2846,2848,2850,2852,2854,2856,2858,2860,2862,2864,2866,2869,2871,2874,2876],{"class":385,"line":413},[383,2845,546],{"class":389},[383,2847,17],{"class":404},[383,2849,450],{"class":449},[383,2851,2669],{"class":393},[383,2853,455],{"class":404},[383,2855,564],{"class":458},[383,2857,462],{"class":404},[383,2859,2669],{"class":393},[383,2861,467],{"class":404},[383,2863,422],{"class":393},[383,2865,149],{"class":404},[383,2867,2868],{"class":393},"length",[383,2870,462],{"class":404},[383,2872,2873],{"class":393}," k",[383,2875,478],{"class":404},[383,2877,481],{"class":404},[383,2879,2880,2883,2886,2888,2890,2892,2894],{"class":385,"line":499},[383,2881,2882],{"class":449},"        int",[383,2884,2885],{"class":393}," x ",[383,2887,455],{"class":404},[383,2889,422],{"class":393},[383,2891,425],{"class":404},[383,2893,2488],{"class":393},[383,2895,496],{"class":404},[383,2897,2898,2900,2902,2904,2906,2908,2910],{"class":385,"line":601},[383,2899,2882],{"class":449},[383,2901,549],{"class":393},[383,2903,455],{"class":404},[383,2905,2669],{"class":393},[383,2907,1676],{"class":404},[383,2909,564],{"class":458},[383,2911,847],{"class":404},[383,2913,2914],{"class":385,"line":720},[383,2915,2916],{"class":826},"        \u002F\u002F schuif grotere elementen één plek naar rechts\n",[383,2918,2919,2921,2923,2925,2927,2929,2932,2934,2936,2938,2940,2942,2944,2946],{"class":385,"line":726},[383,2920,2726],{"class":389},[383,2922,17],{"class":404},[383,2924,1433],{"class":393},[383,2926,2731],{"class":404},[383,2928,459],{"class":458},[383,2930,2931],{"class":404}," &&",[383,2933,422],{"class":393},[383,2935,425],{"class":404},[383,2937,595],{"class":393},[383,2939,585],{"class":404},[383,2941,2747],{"class":404},[383,2943,2750],{"class":393},[383,2945,862],{"class":404},[383,2947,481],{"class":404},[383,2949,2950,2952,2954,2956,2958,2960,2962,2964,2966,2968,2970],{"class":385,"line":732},[383,2951,2757],{"class":393},[383,2953,425],{"class":404},[383,2955,1433],{"class":393},[383,2957,561],{"class":404},[383,2959,564],{"class":458},[383,2961,585],{"class":404},[383,2963,2770],{"class":404},[383,2965,422],{"class":393},[383,2967,425],{"class":404},[383,2969,595],{"class":393},[383,2971,496],{"class":404},[383,2973,2974,2977],{"class":385,"line":1298},[383,2975,2976],{"class":393},"            j",[383,2978,2979],{"class":404},"--;\n",[383,2981,2982],{"class":385,"line":2791},[383,2983,723],{"class":404},[383,2985,2987,2989,2991,2993,2995,2997,2999,3001,3003,3005],{"class":385,"line":2986},10,[383,2988,2794],{"class":393},[383,2990,425],{"class":404},[383,2992,1433],{"class":393},[383,2994,561],{"class":404},[383,2996,564],{"class":458},[383,2998,585],{"class":404},[383,3000,2770],{"class":404},[383,3002,2750],{"class":393},[383,3004,462],{"class":404},[383,3006,3007],{"class":826}," \u002F\u002F na ronde k is a[0..k] gesorteerd\n",[383,3009,3011],{"class":385,"line":3010},11,[383,3012,729],{"class":404},[383,3014,3016],{"class":385,"line":3015},12,[383,3017,502],{"class":404},[10,3019,3020,3021,3023,3024,3027,3028,3031,3032,149],{},"Omdat de ",[46,3022,802],{}," stopt zodra ",[46,3025,3026],{},"a[j] > x"," niet meer geldt, schuiven gelijke elementen nooit langs\nelkaar. Daardoor is insertion sort ",[14,3029,3030],{},"stabiel",". Op een al gesorteerde array doet de binnenlus niets:\ndan is het ",[46,3033,118],{},[38,3035,2468],{"id":3036},"selection-sort",[10,3038,3039,3041],{},[14,3040,2468],{}," (selecterend sorteren) zoekt in elke ronde het kleinste element van het\nongesorteerde deel en wisselt het naar voren.",[225,3043,3044,3058],{},[228,3045,3046],{},[231,3047,3048,3050,3053,3056],{},[234,3049,2548],{},[234,3051,3052],{},"Zoekgebied",[234,3054,3055],{},"Minimum (index)",[234,3057,2554],{},[247,3059,3060,3072,3091,3109,3128,3145],{},[231,3061,3062,3064,3066,3068],{},[252,3063,2561],{},[252,3065,2564],{},[252,3067,2564],{},[252,3069,3070],{},[46,3071,2569],{},[231,3073,3074,3076,3081,3086],{},[252,3075,268],{},[252,3077,3078],{},[46,3079,3080],{},"a[0..5]",[252,3082,3083,3085],{},[46,3084,268],{}," (4)",[252,3087,3088],{},[46,3089,3090],{},"1, 2, 4, 6, 5, 3",[231,3092,3093,3095,3100,3105],{},[252,3094,1951],{},[252,3096,3097],{},[46,3098,3099],{},"a[1..5]",[252,3101,3102,3104],{},[46,3103,1951],{}," (1)",[252,3106,3107],{},[46,3108,3090],{},[231,3110,3111,3113,3118,3123],{},[252,3112,1969],{},[252,3114,3115],{},[46,3116,3117],{},"a[2..5]",[252,3119,3120,3122],{},[46,3121,1969],{}," (5)",[252,3124,3125],{},[46,3126,3127],{},"1, 2, 3, 6, 5, 4",[231,3129,3130,3132,3137,3141],{},[252,3131,1043],{},[252,3133,3134],{},[46,3135,3136],{},"a[3..5]",[252,3138,3139,3122],{},[46,3140,1043],{},[252,3142,3143],{},[46,3144,2634],{},[231,3146,3147,3149,3154,3158],{},[252,3148,1024],{},[252,3150,3151],{},[46,3152,3153],{},"a[4..5]",[252,3155,3156,3085],{},[46,3157,1024],{},[252,3159,3160],{},[46,3161,2634],{},[10,3163,3164,3165,3168,3169,3172,3173,3175,3176,3179,3180,149],{},"In ronde 2 staat het minimum al op zijn plek; de \"wissel\" van ",[46,3166,3167],{},"a[1]"," met zichzelf verandert niets.\nIn ronde 1 zie je ook waarom selection sort ",[14,3170,3171],{},"niet stabiel"," is: de ",[46,3174,1024],{}," springt in één keer van\nvoren naar index 4, over andere elementen heen. Bij gelijke waarden kan zo'n sprong hun volgorde\nomdraaien: ",[46,3177,3178],{},"[3a, 3b, 1]"," wordt na ronde 1 ",[46,3181,3182],{},"[1, 3b, 3a]",[368,3184,3185,3365],{},[371,3186,3187],{"v-slot:python":373},[375,3188,3190],{"className":377,"code":3189,"language":379,"meta":373,"style":373},"def selection_sort(a):\n    n = len(a)\n    for k in range(1, n):\n        # zoek het minimum in a[k-1..n-1]\n        m = k - 1\n        for j in range(k, n):\n            if a[j] \u003C a[m]:\n                m = j\n        # wissel altijd, ook als m == k-1\n        a[k - 1], a[m] = a[m], a[k - 1]\n",[46,3191,3192,3205,3221,3241,3246,3259,3280,3305,3315,3320],{"__ignoreMap":373},[383,3193,3194,3196,3199,3201,3203],{"class":385,"line":386},[383,3195,1611],{"class":449},[383,3197,3198],{"class":400}," selection_sort",[383,3200,405],{"class":404},[383,3202,27],{"class":1619},[383,3204,410],{"class":404},[383,3206,3207,3210,3212,3214,3216,3218],{"class":385,"line":413},[383,3208,3209],{"class":393},"    n ",[383,3211,455],{"class":404},[383,3213,2682],{"class":400},[383,3215,405],{"class":404},[383,3217,27],{"class":400},[383,3219,3220],{"class":404},")\n",[383,3222,3223,3225,3227,3229,3231,3233,3235,3237,3239],{"class":385,"line":499},[383,3224,546],{"class":389},[383,3226,2669],{"class":393},[383,3228,397],{"class":389},[383,3230,401],{"class":400},[383,3232,405],{"class":404},[383,3234,268],{"class":458},[383,3236,567],{"class":404},[383,3238,470],{"class":400},[383,3240,410],{"class":404},[383,3242,3243],{"class":385,"line":601},[383,3244,3245],{"class":826},"        # zoek het minimum in a[k-1..n-1]\n",[383,3247,3248,3251,3253,3255,3257],{"class":385,"line":720},[383,3249,3250],{"class":393},"        m ",[383,3252,455],{"class":404},[383,3254,2669],{"class":393},[383,3256,1676],{"class":404},[383,3258,917],{"class":458},[383,3260,3261,3264,3266,3268,3270,3272,3274,3276,3278],{"class":385,"line":726},[383,3262,3263],{"class":389},"        for",[383,3265,549],{"class":393},[383,3267,397],{"class":389},[383,3269,401],{"class":400},[383,3271,405],{"class":404},[383,3273,2488],{"class":400},[383,3275,567],{"class":404},[383,3277,470],{"class":400},[383,3279,410],{"class":404},[383,3281,3282,3285,3287,3289,3291,3293,3296,3298,3300,3303],{"class":385,"line":732},[383,3283,3284],{"class":389},"            if",[383,3286,422],{"class":393},[383,3288,425],{"class":404},[383,3290,595],{"class":393},[383,3292,585],{"class":404},[383,3294,3295],{"class":404}," \u003C",[383,3297,422],{"class":393},[383,3299,425],{"class":404},[383,3301,3302],{"class":393},"m",[383,3304,598],{"class":404},[383,3306,3307,3310,3312],{"class":385,"line":1298},[383,3308,3309],{"class":393},"                m ",[383,3311,455],{"class":404},[383,3313,3314],{"class":393}," j\n",[383,3316,3317],{"class":385,"line":2791},[383,3318,3319],{"class":826},"        # wissel altijd, ook als m == k-1\n",[383,3321,3322,3324,3326,3329,3331,3333,3335,3337,3339,3341,3343,3345,3347,3349,3351,3353,3355,3357,3359,3361,3363],{"class":385,"line":2986},[383,3323,2794],{"class":393},[383,3325,425],{"class":404},[383,3327,3328],{"class":393},"k ",[383,3330,1676],{"class":404},[383,3332,564],{"class":458},[383,3334,1734],{"class":404},[383,3336,422],{"class":393},[383,3338,425],{"class":404},[383,3340,3302],{"class":393},[383,3342,585],{"class":404},[383,3344,2770],{"class":404},[383,3346,422],{"class":393},[383,3348,425],{"class":404},[383,3350,3302],{"class":393},[383,3352,1734],{"class":404},[383,3354,422],{"class":393},[383,3356,425],{"class":404},[383,3358,3328],{"class":393},[383,3360,1676],{"class":404},[383,3362,564],{"class":458},[383,3364,431],{"class":404},[371,3366,3367],{"v-slot:java":373},[375,3368,3370],{"className":436,"code":3369,"language":438,"meta":373,"style":373},"static void selectionSort(int[] a) {\n    int n = a.length;\n    for (int k = 1; k \u003C n; k++) {\n        \u002F\u002F zoek het minimum in a[k-1..n-1]\n        int m = k - 1;\n        for (int j = k; j \u003C n; j++) {\n            if (a[j] \u003C a[m]) {\n                m = j;\n            }\n        }\n        \u002F\u002F wissel altijd, ook als m == k-1\n        int tmp = a[k - 1];\n        a[k - 1] = a[m];\n        a[m] = tmp;\n    }\n}\n",[46,3371,3372,3393,3409,3439,3444,3461,3491,3517,3527,3532,3536,3541,3562,3587,3605,3610],{"__ignoreMap":373},[383,3373,3374,3376,3378,3381,3383,3385,3387,3389,3391],{"class":385,"line":386},[383,3375,1755],{"class":449},[383,3377,2826],{"class":449},[383,3379,3380],{"class":400}," selectionSort",[383,3382,405],{"class":404},[383,3384,450],{"class":449},[383,3386,1767],{"class":404},[383,3388,422],{"class":393},[383,3390,862],{"class":404},[383,3392,481],{"class":404},[383,3394,3395,3397,3399,3401,3403,3405,3407],{"class":385,"line":413},[383,3396,1416],{"class":449},[383,3398,1638],{"class":393},[383,3400,455],{"class":404},[383,3402,422],{"class":393},[383,3404,149],{"class":404},[383,3406,2868],{"class":393},[383,3408,847],{"class":404},[383,3410,3411,3413,3415,3417,3419,3421,3423,3425,3427,3429,3431,3433,3435,3437],{"class":385,"line":499},[383,3412,546],{"class":389},[383,3414,17],{"class":404},[383,3416,450],{"class":449},[383,3418,2669],{"class":393},[383,3420,455],{"class":404},[383,3422,564],{"class":458},[383,3424,462],{"class":404},[383,3426,2669],{"class":393},[383,3428,467],{"class":404},[383,3430,470],{"class":393},[383,3432,462],{"class":404},[383,3434,2873],{"class":393},[383,3436,478],{"class":404},[383,3438,481],{"class":404},[383,3440,3441],{"class":385,"line":601},[383,3442,3443],{"class":826},"        \u002F\u002F zoek het minimum in a[k-1..n-1]\n",[383,3445,3446,3448,3451,3453,3455,3457,3459],{"class":385,"line":720},[383,3447,2882],{"class":449},[383,3449,3450],{"class":393}," m ",[383,3452,455],{"class":404},[383,3454,2669],{"class":393},[383,3456,1676],{"class":404},[383,3458,564],{"class":458},[383,3460,847],{"class":404},[383,3462,3463,3465,3467,3469,3471,3473,3475,3477,3479,3481,3483,3485,3487,3489],{"class":385,"line":726},[383,3464,3263],{"class":389},[383,3466,17],{"class":404},[383,3468,450],{"class":449},[383,3470,549],{"class":393},[383,3472,455],{"class":404},[383,3474,2873],{"class":393},[383,3476,462],{"class":404},[383,3478,549],{"class":393},[383,3480,467],{"class":404},[383,3482,470],{"class":393},[383,3484,462],{"class":404},[383,3486,677],{"class":393},[383,3488,478],{"class":404},[383,3490,481],{"class":404},[383,3492,3493,3495,3497,3499,3501,3503,3505,3507,3509,3511,3513,3515],{"class":385,"line":732},[383,3494,3284],{"class":389},[383,3496,17],{"class":404},[383,3498,27],{"class":393},[383,3500,425],{"class":404},[383,3502,595],{"class":393},[383,3504,585],{"class":404},[383,3506,3295],{"class":404},[383,3508,422],{"class":393},[383,3510,425],{"class":404},[383,3512,3302],{"class":393},[383,3514,706],{"class":404},[383,3516,481],{"class":404},[383,3518,3519,3521,3523,3525],{"class":385,"line":1298},[383,3520,3309],{"class":393},[383,3522,455],{"class":404},[383,3524,677],{"class":393},[383,3526,847],{"class":404},[383,3528,3529],{"class":385,"line":2791},[383,3530,3531],{"class":404},"            }\n",[383,3533,3534],{"class":385,"line":2986},[383,3535,723],{"class":404},[383,3537,3538],{"class":385,"line":3010},[383,3539,3540],{"class":826},"        \u002F\u002F wissel altijd, ook als m == k-1\n",[383,3542,3543,3545,3548,3550,3552,3554,3556,3558,3560],{"class":385,"line":3015},[383,3544,2882],{"class":449},[383,3546,3547],{"class":393}," tmp ",[383,3549,455],{"class":404},[383,3551,422],{"class":393},[383,3553,425],{"class":404},[383,3555,3328],{"class":393},[383,3557,1676],{"class":404},[383,3559,564],{"class":458},[383,3561,496],{"class":404},[383,3563,3565,3567,3569,3571,3573,3575,3577,3579,3581,3583,3585],{"class":385,"line":3564},13,[383,3566,2794],{"class":393},[383,3568,425],{"class":404},[383,3570,3328],{"class":393},[383,3572,1676],{"class":404},[383,3574,564],{"class":458},[383,3576,585],{"class":404},[383,3578,2770],{"class":404},[383,3580,422],{"class":393},[383,3582,425],{"class":404},[383,3584,3302],{"class":393},[383,3586,496],{"class":404},[383,3588,3590,3592,3594,3596,3598,3600,3603],{"class":385,"line":3589},14,[383,3591,2794],{"class":393},[383,3593,425],{"class":404},[383,3595,3302],{"class":393},[383,3597,585],{"class":404},[383,3599,2770],{"class":404},[383,3601,3602],{"class":393}," tmp",[383,3604,847],{"class":404},[383,3606,3608],{"class":385,"line":3607},15,[383,3609,729],{"class":404},[383,3611,3613],{"class":385,"line":3612},16,[383,3614,502],{"class":404},[10,3616,3617,3618,3621,3622,149],{},"Selection sort doet altijd evenveel vergelijkingen, ongeacht de invoer: ",[46,3619,3620],{},"n(n-1)\u002F2",". Ook een al\ngesorteerde array kost dus ",[46,3623,107],{},[38,3625,2494],{"id":3626},"bubble-sort",[10,3628,3629,3631],{},[14,3630,2494],{}," loopt van links naar rechts en wisselt twee buren als de linker groter is. Het\ngrootste element \"borrelt\" zo in één doorloop naar het einde.",[225,3633,3634,3645],{},[228,3635,3636],{},[231,3637,3638,3640,3643],{},[234,3639,2548],{},[234,3641,3642],{},"Aantal wissels",[234,3644,2554],{},[247,3646,3647,3657,3668,3679,3690,3700],{},[231,3648,3649,3651,3653],{},[252,3650,2561],{},[252,3652,2564],{},[252,3654,3655],{},[46,3656,2569],{},[231,3658,3659,3661,3663],{},[252,3660,268],{},[252,3662,1043],{},[252,3664,3665],{},[46,3666,3667],{},"2, 4, 5, 1, 3, 6",[231,3669,3670,3672,3674],{},[252,3671,1951],{},[252,3673,1951],{},[252,3675,3676],{},[46,3677,3678],{},"2, 4, 1, 3, 5, 6",[231,3680,3681,3683,3685],{},[252,3682,1969],{},[252,3684,1951],{},[252,3686,3687],{},[46,3688,3689],{},"2, 1, 3, 4, 5, 6",[231,3691,3692,3694,3696],{},[252,3693,1043],{},[252,3695,268],{},[252,3697,3698],{},[46,3699,2634],{},[231,3701,3702,3704,3706],{},[252,3703,1024],{},[252,3705,2047],{},[252,3707,3708],{},[46,3709,2634],{},[10,3711,3712,3713,3716,3717,3716,3720,3723,3724,3716,3727,3730,3731,3733,3734,3737],{},"Ronde 1 in detail: ",[46,3714,3715],{},"5>2"," wissel, ",[46,3718,3719],{},"5>4",[46,3721,3722],{},"5\u003C6"," niets, ",[46,3725,3726],{},"6>1",[46,3728,3729],{},"6>3"," wissel. Na ronde 1\nstaat ",[46,3732,2604],{}," achteraan, na ronde 2 staan ",[46,3735,3736],{},"5, 6"," achteraan, enzovoort.",[10,3739,3740,3741,3743],{},"Na ronde 4 is de array al gesorteerd. Er bestaat een variant die dan stopt (als een ronde geen enkele\nwissel deed), maar volgens onze afspraak loopt bubble sort altijd alle ",[46,3742,744],{}," rondes door.",[368,3745,3746,3898],{},[371,3747,3748],{"v-slot:python":373},[375,3749,3751],{"className":377,"code":3750,"language":379,"meta":373,"style":373},"def bubble_sort(a):\n    n = len(a)\n    for r in range(1, n):\n        # na ronde r staan de r grootste achteraan, die slaan we over\n        for j in range(n - r):\n            if a[j] > a[j + 1]:\n                a[j], a[j + 1] = a[j + 1], a[j]\n",[46,3752,3753,3766,3780,3801,3806,3827,3853],{"__ignoreMap":373},[383,3754,3755,3757,3760,3762,3764],{"class":385,"line":386},[383,3756,1611],{"class":449},[383,3758,3759],{"class":400}," bubble_sort",[383,3761,405],{"class":404},[383,3763,27],{"class":1619},[383,3765,410],{"class":404},[383,3767,3768,3770,3772,3774,3776,3778],{"class":385,"line":413},[383,3769,3209],{"class":393},[383,3771,455],{"class":404},[383,3773,2682],{"class":400},[383,3775,405],{"class":404},[383,3777,27],{"class":400},[383,3779,3220],{"class":404},[383,3781,3782,3784,3787,3789,3791,3793,3795,3797,3799],{"class":385,"line":499},[383,3783,546],{"class":389},[383,3785,3786],{"class":393}," r ",[383,3788,397],{"class":389},[383,3790,401],{"class":400},[383,3792,405],{"class":404},[383,3794,268],{"class":458},[383,3796,567],{"class":404},[383,3798,470],{"class":400},[383,3800,410],{"class":404},[383,3802,3803],{"class":385,"line":601},[383,3804,3805],{"class":826},"        # na ronde r staan de r grootste achteraan, die slaan we over\n",[383,3807,3808,3810,3812,3814,3816,3818,3820,3822,3825],{"class":385,"line":720},[383,3809,3263],{"class":389},[383,3811,549],{"class":393},[383,3813,397],{"class":389},[383,3815,401],{"class":400},[383,3817,405],{"class":404},[383,3819,1690],{"class":400},[383,3821,1676],{"class":404},[383,3823,3824],{"class":400}," r",[383,3826,410],{"class":404},[383,3828,3829,3831,3833,3835,3837,3839,3841,3843,3845,3847,3849,3851],{"class":385,"line":726},[383,3830,3284],{"class":389},[383,3832,422],{"class":393},[383,3834,425],{"class":404},[383,3836,595],{"class":393},[383,3838,585],{"class":404},[383,3840,2747],{"class":404},[383,3842,422],{"class":393},[383,3844,425],{"class":404},[383,3846,1433],{"class":393},[383,3848,561],{"class":404},[383,3850,564],{"class":458},[383,3852,598],{"class":404},[383,3854,3855,3858,3860,3862,3864,3866,3868,3870,3872,3874,3876,3878,3880,3882,3884,3886,3888,3890,3892,3894,3896],{"class":385,"line":732},[383,3856,3857],{"class":393},"                a",[383,3859,425],{"class":404},[383,3861,595],{"class":393},[383,3863,1734],{"class":404},[383,3865,422],{"class":393},[383,3867,425],{"class":404},[383,3869,1433],{"class":393},[383,3871,561],{"class":404},[383,3873,564],{"class":458},[383,3875,585],{"class":404},[383,3877,2770],{"class":404},[383,3879,422],{"class":393},[383,3881,425],{"class":404},[383,3883,1433],{"class":393},[383,3885,561],{"class":404},[383,3887,564],{"class":458},[383,3889,1734],{"class":404},[383,3891,422],{"class":393},[383,3893,425],{"class":404},[383,3895,595],{"class":393},[383,3897,431],{"class":404},[371,3899,3900],{"v-slot:java":373},[375,3901,3903],{"className":436,"code":3902,"language":438,"meta":373,"style":373},"static void bubbleSort(int[] a) {\n    int n = a.length;\n    for (int r = 1; r \u003C n; r++) {\n        \u002F\u002F na ronde r staan de r grootste achteraan, die slaan we over\n        for (int j = 0; j \u003C n - r; j++) {\n            if (a[j] > a[j + 1]) {\n                int tmp = a[j];\n                a[j] = a[j + 1];\n                a[j + 1] = tmp;\n            }\n        }\n    }\n}\n",[46,3904,3905,3926,3942,3972,3977,4011,4041,4058,4082,4102,4106,4110,4114],{"__ignoreMap":373},[383,3906,3907,3909,3911,3914,3916,3918,3920,3922,3924],{"class":385,"line":386},[383,3908,1755],{"class":449},[383,3910,2826],{"class":449},[383,3912,3913],{"class":400}," bubbleSort",[383,3915,405],{"class":404},[383,3917,450],{"class":449},[383,3919,1767],{"class":404},[383,3921,422],{"class":393},[383,3923,862],{"class":404},[383,3925,481],{"class":404},[383,3927,3928,3930,3932,3934,3936,3938,3940],{"class":385,"line":413},[383,3929,1416],{"class":449},[383,3931,1638],{"class":393},[383,3933,455],{"class":404},[383,3935,422],{"class":393},[383,3937,149],{"class":404},[383,3939,2868],{"class":393},[383,3941,847],{"class":404},[383,3943,3944,3946,3948,3950,3952,3954,3956,3958,3960,3962,3964,3966,3968,3970],{"class":385,"line":499},[383,3945,546],{"class":389},[383,3947,17],{"class":404},[383,3949,450],{"class":449},[383,3951,3786],{"class":393},[383,3953,455],{"class":404},[383,3955,564],{"class":458},[383,3957,462],{"class":404},[383,3959,3786],{"class":393},[383,3961,467],{"class":404},[383,3963,470],{"class":393},[383,3965,462],{"class":404},[383,3967,3824],{"class":393},[383,3969,478],{"class":404},[383,3971,481],{"class":404},[383,3973,3974],{"class":385,"line":601},[383,3975,3976],{"class":826},"        \u002F\u002F na ronde r staan de r grootste achteraan, die slaan we over\n",[383,3978,3979,3981,3983,3985,3987,3989,3991,3993,3995,3997,3999,4001,4003,4005,4007,4009],{"class":385,"line":720},[383,3980,3263],{"class":389},[383,3982,17],{"class":404},[383,3984,450],{"class":449},[383,3986,549],{"class":393},[383,3988,455],{"class":404},[383,3990,459],{"class":458},[383,3992,462],{"class":404},[383,3994,549],{"class":393},[383,3996,467],{"class":404},[383,3998,1638],{"class":393},[383,4000,1676],{"class":404},[383,4002,3824],{"class":393},[383,4004,462],{"class":404},[383,4006,677],{"class":393},[383,4008,478],{"class":404},[383,4010,481],{"class":404},[383,4012,4013,4015,4017,4019,4021,4023,4025,4027,4029,4031,4033,4035,4037,4039],{"class":385,"line":726},[383,4014,3284],{"class":389},[383,4016,17],{"class":404},[383,4018,27],{"class":393},[383,4020,425],{"class":404},[383,4022,595],{"class":393},[383,4024,585],{"class":404},[383,4026,2747],{"class":404},[383,4028,422],{"class":393},[383,4030,425],{"class":404},[383,4032,1433],{"class":393},[383,4034,561],{"class":404},[383,4036,564],{"class":458},[383,4038,706],{"class":404},[383,4040,481],{"class":404},[383,4042,4043,4046,4048,4050,4052,4054,4056],{"class":385,"line":732},[383,4044,4045],{"class":449},"                int",[383,4047,3547],{"class":393},[383,4049,455],{"class":404},[383,4051,422],{"class":393},[383,4053,425],{"class":404},[383,4055,595],{"class":393},[383,4057,496],{"class":404},[383,4059,4060,4062,4064,4066,4068,4070,4072,4074,4076,4078,4080],{"class":385,"line":1298},[383,4061,3857],{"class":393},[383,4063,425],{"class":404},[383,4065,595],{"class":393},[383,4067,585],{"class":404},[383,4069,2770],{"class":404},[383,4071,422],{"class":393},[383,4073,425],{"class":404},[383,4075,1433],{"class":393},[383,4077,561],{"class":404},[383,4079,564],{"class":458},[383,4081,496],{"class":404},[383,4083,4084,4086,4088,4090,4092,4094,4096,4098,4100],{"class":385,"line":2791},[383,4085,3857],{"class":393},[383,4087,425],{"class":404},[383,4089,1433],{"class":393},[383,4091,561],{"class":404},[383,4093,564],{"class":458},[383,4095,585],{"class":404},[383,4097,2770],{"class":404},[383,4099,3602],{"class":393},[383,4101,847],{"class":404},[383,4103,4104],{"class":385,"line":2986},[383,4105,3531],{"class":404},[383,4107,4108],{"class":385,"line":3010},[383,4109,723],{"class":404},[383,4111,4112],{"class":385,"line":3015},[383,4113,729],{"class":404},[383,4115,4116],{"class":385,"line":3564},[383,4117,502],{"class":404},[38,4119,4121],{"id":4120},"merge-sort","Merge sort",[10,4123,4124,4126,4127,4130,4131,187,4134,1906,4137,149],{},[14,4125,4121],{}," (samenvoegend sorteren) is verdeel-en-heers (",[19,4128,4129],{},"divide and conquer","): splits de array\nin twee helften, sorteer elke helft recursief en voeg de twee gesorteerde helften samen. We splitsen\nin ",[46,4132,4133],{},"a[0..mid-1]",[46,4135,4136],{},"a[mid..n-1]",[46,4138,4139],{},"mid = ⌊n\u002F2⌋",[225,4141,4142,4155],{},[228,4143,4144],{},[231,4145,4146,4149,4152],{},[234,4147,4148],{},"Stap",[234,4150,4151],{},"Wat gebeurt er",[234,4153,4154],{},"Resultaat",[247,4156,4157,4175,4191,4204,4221,4236,4248,4264],{},[231,4158,4159,4161,4167],{},[252,4160,268],{},[252,4162,4163,4164,4166],{},"splits ",[46,4165,2569],{}," (mid = 3)",[252,4168,4169,187,4172],{},[46,4170,4171],{},"5, 2, 4",[46,4173,4174],{},"6, 1, 3",[231,4176,4177,4179,4184],{},[252,4178,1951],{},[252,4180,4163,4181,4183],{},[46,4182,4171],{}," (mid = 1)",[252,4185,4186,187,4188],{},[46,4187,1024],{},[46,4189,4190],{},"2, 4",[231,4192,4193,4195,4200],{},[252,4194,1969],{},[252,4196,4163,4197,4199],{},[46,4198,4190],{},", voeg samen",[252,4201,4202],{},[46,4203,4190],{},[231,4205,4206,4208,4216],{},[252,4207,1043],{},[252,4209,4210,4211,187,4213,4215],{},"voeg ",[46,4212,1024],{},[46,4214,4190],{}," samen",[252,4217,4218],{},[46,4219,4220],{},"2, 4, 5",[231,4222,4223,4225,4229],{},[252,4224,1024],{},[252,4226,4163,4227,4183],{},[46,4228,4174],{},[252,4230,4231,187,4233],{},[46,4232,2604],{},[46,4234,4235],{},"1, 3",[231,4237,4238,4240,4244],{},[252,4239,2604],{},[252,4241,4163,4242,4199],{},[46,4243,4235],{},[252,4245,4246],{},[46,4247,4235],{},[231,4249,4250,4253,4259],{},[252,4251,4252],{},"7",[252,4254,4210,4255,187,4257,4215],{},[46,4256,2604],{},[46,4258,4235],{},[252,4260,4261],{},[46,4262,4263],{},"1, 3, 6",[231,4265,4266,4268,4274],{},[252,4267,2088],{},[252,4269,4210,4270,187,4272,4215],{},[46,4271,4220],{},[46,4273,4263],{},[252,4275,4276],{},[46,4277,2634],{},[10,4279,4280,4281,4284],{},"Bij het samenvoegen vergelijk je steeds de voorste elementen van beide helften en pak je de\nkleinste. Bij gelijke waarden pak je ",[14,4282,4283],{},"eerst links",": daardoor is merge sort stabiel.",[368,4286,4287,4588],{},[371,4288,4289],{"v-slot:python":373},[375,4290,4292],{"className":377,"code":4291,"language":379,"meta":373,"style":373},"def merge_sort(a):\n    if len(a) \u003C= 1:\n        return a\n    mid = len(a) \u002F\u002F 2\n    links = merge_sort(a[:mid])\n    rechts = merge_sort(a[mid:])\n    # samenvoegen: bij gelijke waarden eerst links (stabiel)\n    res = []\n    i = j = 0\n    while i \u003C len(links) and j \u003C len(rechts):\n        if links[i] \u003C= rechts[j]:\n            res.append(links[i])\n            i += 1\n        else:\n            res.append(rechts[j])\n            j += 1\n    res.extend(links[i:])\n    res.extend(rechts[j:])\n    return res\n",[46,4293,4294,4307,4326,4333,4353,4375,4395,4400,4410,4422,4454,4478,4498,4507,4514,4532,4540,4561,4580],{"__ignoreMap":373},[383,4295,4296,4298,4301,4303,4305],{"class":385,"line":386},[383,4297,1611],{"class":449},[383,4299,4300],{"class":400}," merge_sort",[383,4302,405],{"class":404},[383,4304,27],{"class":1619},[383,4306,410],{"class":404},[383,4308,4309,4311,4313,4315,4317,4319,4322,4324],{"class":385,"line":413},[383,4310,1635],{"class":389},[383,4312,2682],{"class":400},[383,4314,405],{"class":404},[383,4316,27],{"class":400},[383,4318,862],{"class":404},[383,4320,4321],{"class":404}," \u003C=",[383,4323,564],{"class":458},[383,4325,812],{"class":404},[383,4327,4328,4330],{"class":385,"line":499},[383,4329,1650],{"class":389},[383,4331,4332],{"class":393}," a\n",[383,4334,4335,4338,4340,4342,4344,4346,4348,4351],{"class":385,"line":601},[383,4336,4337],{"class":393},"    mid ",[383,4339,455],{"class":404},[383,4341,2682],{"class":400},[383,4343,405],{"class":404},[383,4345,27],{"class":400},[383,4347,862],{"class":404},[383,4349,4350],{"class":404}," \u002F\u002F",[383,4352,1374],{"class":458},[383,4354,4355,4358,4360,4362,4364,4366,4369,4372],{"class":385,"line":720},[383,4356,4357],{"class":393},"    links ",[383,4359,455],{"class":404},[383,4361,4300],{"class":400},[383,4363,405],{"class":404},[383,4365,27],{"class":400},[383,4367,4368],{"class":404},"[:",[383,4370,4371],{"class":400},"mid",[383,4373,4374],{"class":404},"])\n",[383,4376,4377,4380,4382,4384,4386,4388,4390,4392],{"class":385,"line":726},[383,4378,4379],{"class":393},"    rechts ",[383,4381,455],{"class":404},[383,4383,4300],{"class":400},[383,4385,405],{"class":404},[383,4387,27],{"class":400},[383,4389,425],{"class":404},[383,4391,4371],{"class":400},[383,4393,4394],{"class":404},":])\n",[383,4396,4397],{"class":385,"line":732},[383,4398,4399],{"class":826},"    # samenvoegen: bij gelijke waarden eerst links (stabiel)\n",[383,4401,4402,4405,4407],{"class":385,"line":1298},[383,4403,4404],{"class":393},"    res ",[383,4406,455],{"class":404},[383,4408,4409],{"class":404}," []\n",[383,4411,4412,4414,4416,4418,4420],{"class":385,"line":2791},[383,4413,817],{"class":393},[383,4415,455],{"class":404},[383,4417,549],{"class":393},[383,4419,455],{"class":404},[383,4421,1653],{"class":458},[383,4423,4424,4426,4428,4430,4432,4434,4437,4439,4441,4443,4445,4447,4449,4452],{"class":385,"line":2986},[383,4425,1356],{"class":389},[383,4427,394],{"class":393},[383,4429,467],{"class":404},[383,4431,2682],{"class":400},[383,4433,405],{"class":404},[383,4435,4436],{"class":400},"links",[383,4438,862],{"class":404},[383,4440,2736],{"class":404},[383,4442,549],{"class":393},[383,4444,467],{"class":404},[383,4446,2682],{"class":400},[383,4448,405],{"class":404},[383,4450,4451],{"class":400},"rechts",[383,4453,410],{"class":404},[383,4455,4456,4458,4461,4463,4465,4467,4469,4472,4474,4476],{"class":385,"line":3010},[383,4457,576],{"class":389},[383,4459,4460],{"class":393}," links",[383,4462,425],{"class":404},[383,4464,428],{"class":393},[383,4466,585],{"class":404},[383,4468,4321],{"class":404},[383,4470,4471],{"class":393}," rechts",[383,4473,425],{"class":404},[383,4475,595],{"class":393},[383,4477,598],{"class":404},[383,4479,4480,4483,4485,4488,4490,4492,4494,4496],{"class":385,"line":3015},[383,4481,4482],{"class":393},"            res",[383,4484,149],{"class":404},[383,4486,4487],{"class":400},"append",[383,4489,405],{"class":404},[383,4491,4436],{"class":400},[383,4493,425],{"class":404},[383,4495,428],{"class":400},[383,4497,4374],{"class":404},[383,4499,4500,4503,4505],{"class":385,"line":3564},[383,4501,4502],{"class":393},"            i ",[383,4504,419],{"class":404},[383,4506,917],{"class":458},[383,4508,4509,4512],{"class":385,"line":3589},[383,4510,4511],{"class":389},"        else",[383,4513,812],{"class":404},[383,4515,4516,4518,4520,4522,4524,4526,4528,4530],{"class":385,"line":3607},[383,4517,4482],{"class":393},[383,4519,149],{"class":404},[383,4521,4487],{"class":400},[383,4523,405],{"class":404},[383,4525,4451],{"class":400},[383,4527,425],{"class":404},[383,4529,595],{"class":400},[383,4531,4374],{"class":404},[383,4533,4534,4536,4538],{"class":385,"line":3612},[383,4535,2783],{"class":393},[383,4537,419],{"class":404},[383,4539,917],{"class":458},[383,4541,4543,4546,4548,4551,4553,4555,4557,4559],{"class":385,"line":4542},17,[383,4544,4545],{"class":393},"    res",[383,4547,149],{"class":404},[383,4549,4550],{"class":400},"extend",[383,4552,405],{"class":404},[383,4554,4436],{"class":400},[383,4556,425],{"class":404},[383,4558,428],{"class":400},[383,4560,4394],{"class":404},[383,4562,4564,4566,4568,4570,4572,4574,4576,4578],{"class":385,"line":4563},18,[383,4565,4545],{"class":393},[383,4567,149],{"class":404},[383,4569,4550],{"class":400},[383,4571,405],{"class":404},[383,4573,4451],{"class":400},[383,4575,425],{"class":404},[383,4577,595],{"class":400},[383,4579,4394],{"class":404},[383,4581,4583,4585],{"class":385,"line":4582},19,[383,4584,1663],{"class":389},[383,4586,4587],{"class":393}," res\n",[371,4589,4590],{"v-slot:java":373},[375,4591,4593],{"className":436,"code":4592,"language":438,"meta":373,"style":373},"static int[] mergeSort(int[] a) {\n    if (a.length \u003C= 1) {\n        return a;\n    }\n    int mid = a.length \u002F 2;\n    int[] links = mergeSort(java.util.Arrays.copyOfRange(a, 0, mid));\n    int[] rechts = mergeSort(java.util.Arrays.copyOfRange(a, mid, a.length));\n    \u002F\u002F samenvoegen: bij gelijke waarden eerst links (stabiel)\n    int[] res = new int[a.length];\n    int i = 0, j = 0, k = 0;\n    while (i \u003C links.length && j \u003C rechts.length) {\n        if (links[i] \u003C= rechts[j]) {\n            res[k++] = links[i++];\n        } else {\n            res[k++] = rechts[j++];\n        }\n    }\n    while (i \u003C links.length) res[k++] = links[i++];\n    while (j \u003C rechts.length) res[k++] = rechts[j++];\n    return res;\n}\n",[46,4594,4595,4618,4640,4648,4652,4674,4722,4769,4774,4800,4828,4861,4887,4909,4919,4939,4943,4947,4984,5020,5029],{"__ignoreMap":373},[383,4596,4597,4599,4601,4603,4606,4608,4610,4612,4614,4616],{"class":385,"line":386},[383,4598,1755],{"class":449},[383,4600,1758],{"class":449},[383,4602,1767],{"class":404},[383,4604,4605],{"class":400}," mergeSort",[383,4607,405],{"class":404},[383,4609,450],{"class":449},[383,4611,1767],{"class":404},[383,4613,422],{"class":393},[383,4615,862],{"class":404},[383,4617,481],{"class":404},[383,4619,4620,4622,4624,4626,4628,4631,4634,4636,4638],{"class":385,"line":413},[383,4621,1635],{"class":389},[383,4623,17],{"class":404},[383,4625,27],{"class":393},[383,4627,149],{"class":404},[383,4629,4630],{"class":393},"length ",[383,4632,4633],{"class":404},"\u003C=",[383,4635,564],{"class":458},[383,4637,862],{"class":404},[383,4639,481],{"class":404},[383,4641,4642,4644,4646],{"class":385,"line":499},[383,4643,1650],{"class":389},[383,4645,422],{"class":393},[383,4647,847],{"class":404},[383,4649,4650],{"class":385,"line":601},[383,4651,729],{"class":404},[383,4653,4654,4656,4659,4661,4663,4665,4667,4670,4672],{"class":385,"line":720},[383,4655,1416],{"class":449},[383,4657,4658],{"class":393}," mid ",[383,4660,455],{"class":404},[383,4662,422],{"class":393},[383,4664,149],{"class":404},[383,4666,4630],{"class":393},[383,4668,4669],{"class":404},"\u002F",[383,4671,823],{"class":458},[383,4673,847],{"class":404},[383,4675,4676,4678,4680,4683,4685,4687,4689,4691,4693,4696,4698,4701,4703,4706,4708,4710,4712,4714,4716,4719],{"class":385,"line":726},[383,4677,1416],{"class":449},[383,4679,1767],{"class":404},[383,4681,4682],{"class":393}," links ",[383,4684,455],{"class":404},[383,4686,4605],{"class":400},[383,4688,405],{"class":404},[383,4690,438],{"class":393},[383,4692,149],{"class":404},[383,4694,4695],{"class":393},"util",[383,4697,149],{"class":404},[383,4699,4700],{"class":393},"Arrays",[383,4702,149],{"class":404},[383,4704,4705],{"class":400},"copyOfRange",[383,4707,405],{"class":404},[383,4709,27],{"class":393},[383,4711,567],{"class":404},[383,4713,459],{"class":458},[383,4715,567],{"class":404},[383,4717,4718],{"class":393}," mid",[383,4720,4721],{"class":404},"));\n",[383,4723,4724,4726,4728,4731,4733,4735,4737,4739,4741,4743,4745,4747,4749,4751,4753,4755,4757,4759,4761,4763,4765,4767],{"class":385,"line":732},[383,4725,1416],{"class":449},[383,4727,1767],{"class":404},[383,4729,4730],{"class":393}," rechts ",[383,4732,455],{"class":404},[383,4734,4605],{"class":400},[383,4736,405],{"class":404},[383,4738,438],{"class":393},[383,4740,149],{"class":404},[383,4742,4695],{"class":393},[383,4744,149],{"class":404},[383,4746,4700],{"class":393},[383,4748,149],{"class":404},[383,4750,4705],{"class":400},[383,4752,405],{"class":404},[383,4754,27],{"class":393},[383,4756,567],{"class":404},[383,4758,4718],{"class":393},[383,4760,567],{"class":404},[383,4762,422],{"class":393},[383,4764,149],{"class":404},[383,4766,2868],{"class":393},[383,4768,4721],{"class":404},[383,4770,4771],{"class":385,"line":1298},[383,4772,4773],{"class":826},"    \u002F\u002F samenvoegen: bij gelijke waarden eerst links (stabiel)\n",[383,4775,4776,4778,4780,4783,4785,4788,4790,4792,4794,4796,4798],{"class":385,"line":2791},[383,4777,1416],{"class":449},[383,4779,1767],{"class":404},[383,4781,4782],{"class":393}," res ",[383,4784,455],{"class":404},[383,4786,4787],{"class":389}," new",[383,4789,1758],{"class":449},[383,4791,425],{"class":404},[383,4793,27],{"class":393},[383,4795,149],{"class":404},[383,4797,2868],{"class":393},[383,4799,496],{"class":404},[383,4801,4802,4804,4806,4808,4810,4812,4814,4816,4818,4820,4822,4824,4826],{"class":385,"line":2986},[383,4803,1416],{"class":449},[383,4805,394],{"class":393},[383,4807,455],{"class":404},[383,4809,459],{"class":458},[383,4811,567],{"class":404},[383,4813,549],{"class":393},[383,4815,455],{"class":404},[383,4817,459],{"class":458},[383,4819,567],{"class":404},[383,4821,2669],{"class":393},[383,4823,455],{"class":404},[383,4825,459],{"class":458},[383,4827,847],{"class":404},[383,4829,4830,4832,4834,4836,4838,4840,4842,4844,4847,4849,4851,4853,4855,4857,4859],{"class":385,"line":3010},[383,4831,1356],{"class":389},[383,4833,17],{"class":404},[383,4835,558],{"class":393},[383,4837,467],{"class":404},[383,4839,4460],{"class":393},[383,4841,149],{"class":404},[383,4843,4630],{"class":393},[383,4845,4846],{"class":404},"&&",[383,4848,549],{"class":393},[383,4850,467],{"class":404},[383,4852,4471],{"class":393},[383,4854,149],{"class":404},[383,4856,2868],{"class":393},[383,4858,862],{"class":404},[383,4860,481],{"class":404},[383,4862,4863,4865,4867,4869,4871,4873,4875,4877,4879,4881,4883,4885],{"class":385,"line":3015},[383,4864,576],{"class":389},[383,4866,17],{"class":404},[383,4868,4436],{"class":393},[383,4870,425],{"class":404},[383,4872,428],{"class":393},[383,4874,585],{"class":404},[383,4876,4321],{"class":404},[383,4878,4471],{"class":393},[383,4880,425],{"class":404},[383,4882,595],{"class":393},[383,4884,706],{"class":404},[383,4886,481],{"class":404},[383,4888,4889,4891,4893,4895,4898,4900,4902,4904,4906],{"class":385,"line":3564},[383,4890,4482],{"class":393},[383,4892,425],{"class":404},[383,4894,2488],{"class":393},[383,4896,4897],{"class":404},"++]",[383,4899,2770],{"class":404},[383,4901,4460],{"class":393},[383,4903,425],{"class":404},[383,4905,428],{"class":393},[383,4907,4908],{"class":404},"++];\n",[383,4910,4911,4914,4917],{"class":385,"line":3589},[383,4912,4913],{"class":404},"        }",[383,4915,4916],{"class":389}," else",[383,4918,481],{"class":404},[383,4920,4921,4923,4925,4927,4929,4931,4933,4935,4937],{"class":385,"line":3607},[383,4922,4482],{"class":393},[383,4924,425],{"class":404},[383,4926,2488],{"class":393},[383,4928,4897],{"class":404},[383,4930,2770],{"class":404},[383,4932,4471],{"class":393},[383,4934,425],{"class":404},[383,4936,595],{"class":393},[383,4938,4908],{"class":404},[383,4940,4941],{"class":385,"line":3612},[383,4942,723],{"class":404},[383,4944,4945],{"class":385,"line":4542},[383,4946,729],{"class":404},[383,4948,4949,4951,4953,4955,4957,4959,4961,4963,4965,4968,4970,4972,4974,4976,4978,4980,4982],{"class":385,"line":4563},[383,4950,1356],{"class":389},[383,4952,17],{"class":404},[383,4954,558],{"class":393},[383,4956,467],{"class":404},[383,4958,4460],{"class":393},[383,4960,149],{"class":404},[383,4962,2868],{"class":393},[383,4964,862],{"class":404},[383,4966,4967],{"class":393}," res",[383,4969,425],{"class":404},[383,4971,2488],{"class":393},[383,4973,4897],{"class":404},[383,4975,2770],{"class":404},[383,4977,4460],{"class":393},[383,4979,425],{"class":404},[383,4981,428],{"class":393},[383,4983,4908],{"class":404},[383,4985,4986,4988,4990,4992,4994,4996,4998,5000,5002,5004,5006,5008,5010,5012,5014,5016,5018],{"class":385,"line":4582},[383,4987,1356],{"class":389},[383,4989,17],{"class":404},[383,4991,1433],{"class":393},[383,4993,467],{"class":404},[383,4995,4471],{"class":393},[383,4997,149],{"class":404},[383,4999,2868],{"class":393},[383,5001,862],{"class":404},[383,5003,4967],{"class":393},[383,5005,425],{"class":404},[383,5007,2488],{"class":393},[383,5009,4897],{"class":404},[383,5011,2770],{"class":404},[383,5013,4471],{"class":393},[383,5015,425],{"class":404},[383,5017,595],{"class":393},[383,5019,4908],{"class":404},[383,5021,5023,5025,5027],{"class":385,"line":5022},20,[383,5024,1663],{"class":389},[383,5026,4967],{"class":393},[383,5028,847],{"class":404},[383,5030,5032],{"class":385,"line":5031},21,[383,5033,502],{"class":404},[10,5035,5036,5037,5039,5040,5042,5043,5045,5046,5048],{},"Er zijn ",[46,5038,194],{}," niveaus van splitsen, en op elk niveau kost samenvoegen samen ",[46,5041,118],{},". Totaal:\n",[46,5044,218],{},", altijd. Het nadeel: je hebt een extra array van grootte ",[46,5047,48],{}," nodig.",[38,5050,5052],{"id":5051},"quicksort-met-lomuto-partitie","Quicksort met Lomuto-partitie",[10,5054,5055,5057,5058,5061,5062,5065,5066,5068],{},[14,5056,2511],{}," kiest een spil (",[19,5059,5060],{},"pivot","), zet alles wat kleiner is links ervan en de rest rechts, en\nsorteert daarna beide kanten recursief. Het hart is de partitie. Wij gebruiken de\n",[14,5063,5064],{},"Lomuto-partitie"," met het ",[14,5067,2517],{}," element als pivot:",[375,5070,5075],{"className":5071,"code":5073,"language":5074},[5072],"language-text","pivot = a[hi]; i = lo\nfor j = lo .. hi-1:\n    if a[j] \u003C pivot: swap(a[i], a[j]); i++\nswap(a[i], a[hi]); return i\n","text",[46,5076,5073],{"__ignoreMap":373},[10,5078,5079,5081,5082,5085],{},[46,5080,428],{}," wijst naar de eerste plek waar het volgende \"kleine\" element moet komen. Elementen die\n",[14,5083,5084],{},"strikt kleiner"," zijn dan de pivot gaan naar links; gelijke elementen blijven rechts.",[10,5087,5088,5089,5092,5093,1910],{},"Uitgewerkt op ",[46,5090,5091],{},"[7, 2, 9, 4, 1, 8, 5]",", pivot = ",[46,5094,1024],{},[225,5096,5097,5121],{},[228,5098,5099],{},[231,5100,5101,5103,5107,5112,5115,5118],{},[234,5102,595],{},[234,5104,27,5105],{},[383,5106,595],{},[234,5108,27,5109,5111],{},[383,5110,595],{}," \u003C 5?",[234,5113,5114],{},"Actie",[234,5116,5117],{},"i daarna",[234,5119,5120],{},"Array",[247,5122,5123,5140,5157,5181,5198,5219,5240,5256],{},[231,5124,5125,5127,5129,5131,5133,5135],{},[252,5126,2561],{},[252,5128,2564],{},[252,5130,2564],{},[252,5132,2564],{},[252,5134,2047],{},[252,5136,5137],{},[46,5138,5139],{},"7, 2, 9, 4, 1, 8, 5",[231,5141,5142,5144,5146,5149,5151,5153],{},[252,5143,2047],{},[252,5145,4252],{},[252,5147,5148],{},"nee",[252,5150,2564],{},[252,5152,2047],{},[252,5154,5155],{},[46,5156,5139],{},[231,5158,5159,5161,5163,5166,5174,5176],{},[252,5160,268],{},[252,5162,1951],{},[252,5164,5165],{},"ja",[252,5167,5168,5169,5171,5172],{},"wissel a",[383,5170,2047],{},", a",[383,5173,268],{},[252,5175,268],{},[252,5177,5178],{},[46,5179,5180],{},"2, 7, 9, 4, 1, 8, 5",[231,5182,5183,5185,5188,5190,5192,5194],{},[252,5184,1951],{},[252,5186,5187],{},"9",[252,5189,5148],{},[252,5191,2564],{},[252,5193,268],{},[252,5195,5196],{},[46,5197,5180],{},[231,5199,5200,5202,5204,5206,5212,5214],{},[252,5201,1969],{},[252,5203,1043],{},[252,5205,5165],{},[252,5207,5168,5208,5171,5210],{},[383,5209,268],{},[383,5211,1969],{},[252,5213,1951],{},[252,5215,5216],{},[46,5217,5218],{},"2, 4, 9, 7, 1, 8, 5",[231,5220,5221,5223,5225,5227,5233,5235],{},[252,5222,1043],{},[252,5224,268],{},[252,5226,5165],{},[252,5228,5168,5229,5171,5231],{},[383,5230,1951],{},[383,5232,1043],{},[252,5234,1969],{},[252,5236,5237],{},[46,5238,5239],{},"2, 4, 1, 7, 9, 8, 5",[231,5241,5242,5244,5246,5248,5250,5252],{},[252,5243,1024],{},[252,5245,2088],{},[252,5247,5148],{},[252,5249,2564],{},[252,5251,1969],{},[252,5253,5254],{},[46,5255,5239],{},[231,5257,5258,5261,5263,5265,5271,5273],{},[252,5259,5260],{},"eind",[252,5262,2564],{},[252,5264,2564],{},[252,5266,5168,5267,5171,5269],{},[383,5268,1969],{},[383,5270,2604],{},[252,5272,1969],{},[252,5274,5275],{},[46,5276,5277],{},"2, 4, 1, 5, 9, 8, 7",[10,5279,5280,5281,5283,5284,5286,5287,187,5290,149],{},"Na de eerste partitie is de array ",[46,5282,5277],{}," en staat de pivot ",[46,5285,1024],{}," op index 3, zijn\ndefinitieve plek. Links staan alleen kleinere getallen, rechts alleen grotere, maar beide kanten zijn\nnog niet gesorteerd. Quicksort gaat nu verder met ",[46,5288,5289],{},"a[0..2]",[46,5291,5292],{},"a[4..6]",[368,5294,5295,5632],{},[371,5296,5297],{"v-slot:python":373},[375,5298,5300],{"className":377,"code":5299,"language":379,"meta":373,"style":373},"def partition(a, lo, hi):\n    pivot = a[hi]  # laatste element is de pivot\n    i = lo\n    for j in range(lo, hi):\n        if a[j] \u003C pivot:  # strikt kleiner gaat naar links\n            a[i], a[j] = a[j], a[i]\n            i += 1\n    a[i], a[hi] = a[hi], a[i]  # pivot op zijn definitieve plek\n    return i\n\ndef quicksort(a, lo=0, hi=None):\n    if hi is None:\n        hi = len(a) - 1\n    if lo \u003C hi:\n        p = partition(a, lo, hi)\n        quicksort(a, lo, p - 1)\n        quicksort(a, p + 1, hi)\n",[46,5301,5302,5325,5344,5353,5374,5396,5432,5440,5480,5487,5491,5517,5530,5550,5563,5586,5610],{"__ignoreMap":373},[383,5303,5304,5306,5309,5311,5313,5315,5318,5320,5323],{"class":385,"line":386},[383,5305,1611],{"class":449},[383,5307,5308],{"class":400}," partition",[383,5310,405],{"class":404},[383,5312,27],{"class":1619},[383,5314,567],{"class":404},[383,5316,5317],{"class":1619}," lo",[383,5319,567],{"class":404},[383,5321,5322],{"class":1619}," hi",[383,5324,410],{"class":404},[383,5326,5327,5330,5332,5334,5336,5339,5341],{"class":385,"line":413},[383,5328,5329],{"class":393},"    pivot ",[383,5331,455],{"class":404},[383,5333,422],{"class":393},[383,5335,425],{"class":404},[383,5337,5338],{"class":393},"hi",[383,5340,585],{"class":404},[383,5342,5343],{"class":826},"  # laatste element is de pivot\n",[383,5345,5346,5348,5350],{"class":385,"line":499},[383,5347,817],{"class":393},[383,5349,455],{"class":404},[383,5351,5352],{"class":393}," lo\n",[383,5354,5355,5357,5359,5361,5363,5365,5368,5370,5372],{"class":385,"line":601},[383,5356,546],{"class":389},[383,5358,549],{"class":393},[383,5360,397],{"class":389},[383,5362,401],{"class":400},[383,5364,405],{"class":404},[383,5366,5367],{"class":400},"lo",[383,5369,567],{"class":404},[383,5371,5322],{"class":400},[383,5373,410],{"class":404},[383,5375,5376,5378,5380,5382,5384,5386,5388,5391,5393],{"class":385,"line":720},[383,5377,576],{"class":389},[383,5379,422],{"class":393},[383,5381,425],{"class":404},[383,5383,595],{"class":393},[383,5385,585],{"class":404},[383,5387,3295],{"class":404},[383,5389,5390],{"class":393}," pivot",[383,5392,1910],{"class":404},[383,5394,5395],{"class":826},"  # strikt kleiner gaat naar links\n",[383,5397,5398,5400,5402,5404,5406,5408,5410,5412,5414,5416,5418,5420,5422,5424,5426,5428,5430],{"class":385,"line":726},[383,5399,2757],{"class":393},[383,5401,425],{"class":404},[383,5403,428],{"class":393},[383,5405,1734],{"class":404},[383,5407,422],{"class":393},[383,5409,425],{"class":404},[383,5411,595],{"class":393},[383,5413,585],{"class":404},[383,5415,2770],{"class":404},[383,5417,422],{"class":393},[383,5419,425],{"class":404},[383,5421,595],{"class":393},[383,5423,1734],{"class":404},[383,5425,422],{"class":393},[383,5427,425],{"class":404},[383,5429,428],{"class":393},[383,5431,431],{"class":404},[383,5433,5434,5436,5438],{"class":385,"line":732},[383,5435,4502],{"class":393},[383,5437,419],{"class":404},[383,5439,917],{"class":458},[383,5441,5442,5445,5447,5449,5451,5453,5455,5457,5459,5461,5463,5465,5467,5469,5471,5473,5475,5477],{"class":385,"line":1298},[383,5443,5444],{"class":393},"    a",[383,5446,425],{"class":404},[383,5448,428],{"class":393},[383,5450,1734],{"class":404},[383,5452,422],{"class":393},[383,5454,425],{"class":404},[383,5456,5338],{"class":393},[383,5458,585],{"class":404},[383,5460,2770],{"class":404},[383,5462,422],{"class":393},[383,5464,425],{"class":404},[383,5466,5338],{"class":393},[383,5468,1734],{"class":404},[383,5470,422],{"class":393},[383,5472,425],{"class":404},[383,5474,428],{"class":393},[383,5476,585],{"class":404},[383,5478,5479],{"class":826},"  # pivot op zijn definitieve plek\n",[383,5481,5482,5484],{"class":385,"line":2791},[383,5483,1663],{"class":389},[383,5485,5486],{"class":393}," i\n",[383,5488,5489],{"class":385,"line":2986},[383,5490,1702],{"emptyLinePlaceholder":1701},[383,5492,5493,5495,5498,5500,5502,5504,5506,5508,5510,5512,5514],{"class":385,"line":3010},[383,5494,1611],{"class":449},[383,5496,5497],{"class":400}," quicksort",[383,5499,405],{"class":404},[383,5501,27],{"class":1619},[383,5503,567],{"class":404},[383,5505,5317],{"class":1619},[383,5507,455],{"class":404},[383,5509,2047],{"class":458},[383,5511,567],{"class":404},[383,5513,5322],{"class":1619},[383,5515,5516],{"class":404},"=None):\n",[383,5518,5519,5521,5524,5527],{"class":385,"line":3015},[383,5520,1635],{"class":389},[383,5522,5523],{"class":393}," hi ",[383,5525,5526],{"class":404},"is",[383,5528,5529],{"class":404}," None:\n",[383,5531,5532,5535,5537,5539,5541,5543,5545,5548],{"class":385,"line":3564},[383,5533,5534],{"class":393},"        hi ",[383,5536,455],{"class":404},[383,5538,2682],{"class":400},[383,5540,405],{"class":404},[383,5542,27],{"class":400},[383,5544,862],{"class":404},[383,5546,5547],{"class":404}," -",[383,5549,917],{"class":458},[383,5551,5552,5554,5557,5559,5561],{"class":385,"line":3589},[383,5553,1635],{"class":389},[383,5555,5556],{"class":393}," lo ",[383,5558,467],{"class":404},[383,5560,5322],{"class":393},[383,5562,812],{"class":404},[383,5564,5565,5568,5570,5572,5574,5576,5578,5580,5582,5584],{"class":385,"line":3607},[383,5566,5567],{"class":393},"        p ",[383,5569,455],{"class":404},[383,5571,5308],{"class":400},[383,5573,405],{"class":404},[383,5575,27],{"class":400},[383,5577,567],{"class":404},[383,5579,5317],{"class":400},[383,5581,567],{"class":404},[383,5583,5322],{"class":400},[383,5585,3220],{"class":404},[383,5587,5588,5591,5593,5595,5597,5599,5601,5604,5606,5608],{"class":385,"line":3612},[383,5589,5590],{"class":400},"        quicksort",[383,5592,405],{"class":404},[383,5594,27],{"class":400},[383,5596,567],{"class":404},[383,5598,5317],{"class":400},[383,5600,567],{"class":404},[383,5602,5603],{"class":400}," p ",[383,5605,1676],{"class":404},[383,5607,564],{"class":458},[383,5609,3220],{"class":404},[383,5611,5612,5614,5616,5618,5620,5622,5624,5626,5628,5630],{"class":385,"line":4542},[383,5613,5590],{"class":400},[383,5615,405],{"class":404},[383,5617,27],{"class":400},[383,5619,567],{"class":404},[383,5621,5603],{"class":400},[383,5623,561],{"class":404},[383,5625,564],{"class":458},[383,5627,567],{"class":404},[383,5629,5322],{"class":400},[383,5631,3220],{"class":404},[371,5633,5634],{"v-slot:java":373},[375,5635,5637],{"className":436,"code":5636,"language":438,"meta":373,"style":373},"static int partition(int[] a, int lo, int hi) {\n    int pivot = a[hi]; \u002F\u002F laatste element is de pivot\n    int i = lo;\n    for (int j = lo; j \u003C hi; j++) {\n        if (a[j] \u003C pivot) { \u002F\u002F strikt kleiner gaat naar links\n            int tmp = a[i]; a[i] = a[j]; a[j] = tmp;\n            i++;\n        }\n    }\n    int tmp = a[i]; a[i] = a[hi]; a[hi] = tmp; \u002F\u002F pivot op zijn definitieve plek\n    return i;\n}\n\nstatic void quicksort(int[] a, int lo, int hi) {\n    if (lo \u003C hi) {\n        int p = partition(a, lo, hi);\n        quicksort(a, lo, p - 1);\n        quicksort(a, p + 1, hi);\n    }\n}\n",[46,5638,5639,5671,5692,5704,5734,5759,5808,5815,5819,5823,5874,5882,5886,5890,5922,5939,5964,5986,6008,6012],{"__ignoreMap":373},[383,5640,5641,5643,5645,5647,5649,5651,5653,5655,5657,5659,5661,5663,5665,5667,5669],{"class":385,"line":386},[383,5642,1755],{"class":449},[383,5644,1758],{"class":449},[383,5646,5308],{"class":400},[383,5648,405],{"class":404},[383,5650,450],{"class":449},[383,5652,1767],{"class":404},[383,5654,422],{"class":393},[383,5656,567],{"class":404},[383,5658,1758],{"class":449},[383,5660,5317],{"class":393},[383,5662,567],{"class":404},[383,5664,1758],{"class":449},[383,5666,5322],{"class":393},[383,5668,862],{"class":404},[383,5670,481],{"class":404},[383,5672,5673,5675,5678,5680,5682,5684,5686,5689],{"class":385,"line":413},[383,5674,1416],{"class":449},[383,5676,5677],{"class":393}," pivot ",[383,5679,455],{"class":404},[383,5681,422],{"class":393},[383,5683,425],{"class":404},[383,5685,5338],{"class":393},[383,5687,5688],{"class":404},"];",[383,5690,5691],{"class":826}," \u002F\u002F laatste element is de pivot\n",[383,5693,5694,5696,5698,5700,5702],{"class":385,"line":499},[383,5695,1416],{"class":449},[383,5697,394],{"class":393},[383,5699,455],{"class":404},[383,5701,5317],{"class":393},[383,5703,847],{"class":404},[383,5705,5706,5708,5710,5712,5714,5716,5718,5720,5722,5724,5726,5728,5730,5732],{"class":385,"line":601},[383,5707,546],{"class":389},[383,5709,17],{"class":404},[383,5711,450],{"class":449},[383,5713,549],{"class":393},[383,5715,455],{"class":404},[383,5717,5317],{"class":393},[383,5719,462],{"class":404},[383,5721,549],{"class":393},[383,5723,467],{"class":404},[383,5725,5322],{"class":393},[383,5727,462],{"class":404},[383,5729,677],{"class":393},[383,5731,478],{"class":404},[383,5733,481],{"class":404},[383,5735,5736,5738,5740,5742,5744,5746,5748,5750,5752,5754,5756],{"class":385,"line":720},[383,5737,576],{"class":389},[383,5739,17],{"class":404},[383,5741,27],{"class":393},[383,5743,425],{"class":404},[383,5745,595],{"class":393},[383,5747,585],{"class":404},[383,5749,3295],{"class":404},[383,5751,5390],{"class":393},[383,5753,862],{"class":404},[383,5755,1199],{"class":404},[383,5757,5758],{"class":826}," \u002F\u002F strikt kleiner gaat naar links\n",[383,5760,5761,5764,5766,5768,5770,5772,5774,5776,5778,5780,5782,5784,5786,5788,5790,5792,5794,5796,5798,5800,5802,5804,5806],{"class":385,"line":726},[383,5762,5763],{"class":449},"            int",[383,5765,3547],{"class":393},[383,5767,455],{"class":404},[383,5769,422],{"class":393},[383,5771,425],{"class":404},[383,5773,428],{"class":393},[383,5775,5688],{"class":404},[383,5777,422],{"class":393},[383,5779,425],{"class":404},[383,5781,428],{"class":393},[383,5783,585],{"class":404},[383,5785,2770],{"class":404},[383,5787,422],{"class":393},[383,5789,425],{"class":404},[383,5791,595],{"class":393},[383,5793,5688],{"class":404},[383,5795,422],{"class":393},[383,5797,425],{"class":404},[383,5799,595],{"class":393},[383,5801,585],{"class":404},[383,5803,2770],{"class":404},[383,5805,3602],{"class":393},[383,5807,847],{"class":404},[383,5809,5810,5813],{"class":385,"line":732},[383,5811,5812],{"class":393},"            i",[383,5814,1291],{"class":404},[383,5816,5817],{"class":385,"line":1298},[383,5818,723],{"class":404},[383,5820,5821],{"class":385,"line":2791},[383,5822,729],{"class":404},[383,5824,5825,5827,5829,5831,5833,5835,5837,5839,5841,5843,5845,5847,5849,5851,5853,5855,5857,5859,5861,5863,5865,5867,5869,5871],{"class":385,"line":2986},[383,5826,1416],{"class":449},[383,5828,3547],{"class":393},[383,5830,455],{"class":404},[383,5832,422],{"class":393},[383,5834,425],{"class":404},[383,5836,428],{"class":393},[383,5838,5688],{"class":404},[383,5840,422],{"class":393},[383,5842,425],{"class":404},[383,5844,428],{"class":393},[383,5846,585],{"class":404},[383,5848,2770],{"class":404},[383,5850,422],{"class":393},[383,5852,425],{"class":404},[383,5854,5338],{"class":393},[383,5856,5688],{"class":404},[383,5858,422],{"class":393},[383,5860,425],{"class":404},[383,5862,5338],{"class":393},[383,5864,585],{"class":404},[383,5866,2770],{"class":404},[383,5868,3602],{"class":393},[383,5870,462],{"class":404},[383,5872,5873],{"class":826}," \u002F\u002F pivot op zijn definitieve plek\n",[383,5875,5876,5878,5880],{"class":385,"line":3010},[383,5877,1663],{"class":389},[383,5879,475],{"class":393},[383,5881,847],{"class":404},[383,5883,5884],{"class":385,"line":3015},[383,5885,502],{"class":404},[383,5887,5888],{"class":385,"line":3564},[383,5889,1702],{"emptyLinePlaceholder":1701},[383,5891,5892,5894,5896,5898,5900,5902,5904,5906,5908,5910,5912,5914,5916,5918,5920],{"class":385,"line":3589},[383,5893,1755],{"class":449},[383,5895,2826],{"class":449},[383,5897,5497],{"class":400},[383,5899,405],{"class":404},[383,5901,450],{"class":449},[383,5903,1767],{"class":404},[383,5905,422],{"class":393},[383,5907,567],{"class":404},[383,5909,1758],{"class":449},[383,5911,5317],{"class":393},[383,5913,567],{"class":404},[383,5915,1758],{"class":449},[383,5917,5322],{"class":393},[383,5919,862],{"class":404},[383,5921,481],{"class":404},[383,5923,5924,5926,5928,5931,5933,5935,5937],{"class":385,"line":3607},[383,5925,1635],{"class":389},[383,5927,17],{"class":404},[383,5929,5930],{"class":393},"lo ",[383,5932,467],{"class":404},[383,5934,5322],{"class":393},[383,5936,862],{"class":404},[383,5938,481],{"class":404},[383,5940,5941,5943,5945,5947,5949,5951,5953,5955,5957,5959,5961],{"class":385,"line":3612},[383,5942,2882],{"class":449},[383,5944,5603],{"class":393},[383,5946,455],{"class":404},[383,5948,5308],{"class":400},[383,5950,405],{"class":404},[383,5952,27],{"class":393},[383,5954,567],{"class":404},[383,5956,5317],{"class":393},[383,5958,567],{"class":404},[383,5960,5322],{"class":393},[383,5962,5963],{"class":404},");\n",[383,5965,5966,5968,5970,5972,5974,5976,5978,5980,5982,5984],{"class":385,"line":4542},[383,5967,5590],{"class":400},[383,5969,405],{"class":404},[383,5971,27],{"class":393},[383,5973,567],{"class":404},[383,5975,5317],{"class":393},[383,5977,567],{"class":404},[383,5979,5603],{"class":393},[383,5981,1676],{"class":404},[383,5983,564],{"class":458},[383,5985,5963],{"class":404},[383,5987,5988,5990,5992,5994,5996,5998,6000,6002,6004,6006],{"class":385,"line":4563},[383,5989,5590],{"class":400},[383,5991,405],{"class":404},[383,5993,27],{"class":393},[383,5995,567],{"class":404},[383,5997,5603],{"class":393},[383,5999,561],{"class":404},[383,6001,564],{"class":458},[383,6003,567],{"class":404},[383,6005,5322],{"class":393},[383,6007,5963],{"class":404},[383,6009,6010],{"class":385,"line":4582},[383,6011,729],{"class":404},[383,6013,6014],{"class":385,"line":5022},[383,6015,502],{"class":404},[10,6017,6018,6019,6021,6022,6025,6026,6028,6029,6031,6032,6034],{},"Valt de pivot steeds ongeveer in het midden, dan halveer je het probleem en kom je op\n",[46,6020,218],{},". Maar is de array ",[14,6023,6024],{},"al gesorteerd",", dan is het laatste element steeds het grootste. De\npartitie levert dan een linkerdeel van ",[46,6027,744],{}," elementen en een leeg rechterdeel op. Dat geeft\n",[46,6030,1543],{},", en dus ",[46,6033,107],{},". In de praktijk kies je daarom vaak een willekeurige pivot.",[38,6036,6038],{"id":6037},"stabiel-en-in-place","Stabiel en in-place",[10,6040,6041],{},"Twee eigenschappen die op het tentamen vaak gevraagd worden:",[55,6043,6044,6053],{},[58,6045,6046,17,6049,6052],{},[14,6047,6048],{},"Stabiel",[19,6050,6051],{},"stable","): gelijke elementen behouden hun onderlinge volgorde. Belangrijk als je\neerst op naam en daarna op leeftijd sorteert: binnen dezelfde leeftijd blijft de naamvolgorde\ndan staan.",[58,6054,6055,6058,6059,6061,6062,6064],{},[14,6056,6057],{},"In-place",": het algoritme gebruikt maar ",[46,6060,209],{}," (of hooguit ",[46,6063,213],{},") extra geheugen naast de\narray zelf.",[38,6066,16],{"id":2397},[225,6068,6069,6091],{},[228,6070,6071],{},[231,6072,6073,6075,6078,6081,6084,6087,6089],{},[234,6074,2438],{},[234,6076,6077],{},"Best",[234,6079,6080],{},"Gemiddeld",[234,6082,6083],{},"Slechtst",[234,6085,6086],{},"Extra geheugen",[234,6088,6048],{},[234,6090,6057],{},[247,6092,6093,6117,6141,6165,6189],{},[231,6094,6095,6097,6101,6105,6109,6113,6115],{},[252,6096,2451],{},[252,6098,6099],{},[46,6100,118],{},[252,6102,6103],{},[46,6104,107],{},[252,6106,6107],{},[46,6108,107],{},[252,6110,6111],{},[46,6112,209],{},[252,6114,5165],{},[252,6116,5165],{},[231,6118,6119,6121,6125,6129,6133,6137,6139],{},[252,6120,2468],{},[252,6122,6123],{},[46,6124,107],{},[252,6126,6127],{},[46,6128,107],{},[252,6130,6131],{},[46,6132,107],{},[252,6134,6135],{},[46,6136,209],{},[252,6138,5148],{},[252,6140,5165],{},[231,6142,6143,6145,6149,6153,6157,6161,6163],{},[252,6144,2494],{},[252,6146,6147],{},[46,6148,107],{},[252,6150,6151],{},[46,6152,107],{},[252,6154,6155],{},[46,6156,107],{},[252,6158,6159],{},[46,6160,209],{},[252,6162,5165],{},[252,6164,5165],{},[231,6166,6167,6169,6173,6177,6181,6185,6187],{},[252,6168,4121],{},[252,6170,6171],{},[46,6172,218],{},[252,6174,6175],{},[46,6176,218],{},[252,6178,6179],{},[46,6180,218],{},[252,6182,6183],{},[46,6184,118],{},[252,6186,5165],{},[252,6188,5148],{},[231,6190,6191,6194,6198,6202,6206,6211,6213],{},[252,6192,6193],{},"Quicksort (Lomuto)",[252,6195,6196],{},[46,6197,218],{},[252,6199,6200],{},[46,6201,218],{},[252,6203,6204],{},[46,6205,107],{},[252,6207,6208,6210],{},[46,6209,213],{}," gemiddeld",[252,6212,5148],{},[252,6214,5165],{},[10,6216,6217,6218,6220,6221,6223,6224,6226,6227,149],{},"Bubble sort met vroegtijdige stop heeft een best case van ",[46,6219,118],{},"; zonder stop, zoals wij hem\ndefiniëren, is ook de best case ",[46,6222,107],{},". Het geheugen van quicksort is de recursiestapel: gemiddeld\n",[46,6225,213],{},", in het slechtste geval ",[46,6228,118],{},[38,6230,2247],{"id":2246},[128,6232,6233,6255,6261,6270,6286],{},[58,6234,6235,6238,6239,6242,6243,6246,6247,6249,6250,6252,6253,149],{},[14,6236,6237],{},"Insertion en selection sort verwisselen."," Insertion sort pakt het ",[19,6240,6241],{},"volgende"," element en schuift\nhet op zijn plek; het gesorteerde deel bevat dan nog niet per se de kleinste. Selection sort\n",[19,6244,6245],{},"zoekt"," het kleinste in de rest. Na ronde 1 van ",[46,6248,2569],{}," geeft insertion\n",[46,6251,2582],{},", selection ",[46,6254,3090],{},[58,6256,6257,6260],{},[14,6258,6259],{},"Een ronde overslaan omdat er niets verandert."," Bij insertion sort telt ronde 3 hierboven\ngewoon mee, ook al blijft de array gelijk.",[58,6262,6263,6266,6267,6269],{},[14,6264,6265],{},"Bubble sort vroegtijdig stoppen."," Volgens de afspraak loop je alle ",[46,6268,744],{}," rondes door. Bij een\nvraag als \"hoeveel vergelijkingen?\" maakt dat uit.",[58,6271,6272,6275,6276,6279,6280,6282,6283,6285],{},[14,6273,6274],{},"De laatste wissel van Lomuto vergeten."," Na de lus staat de pivot nog achteraan; pas de\n",[46,6277,6278],{},"swap(a[i], a[hi])"," zet hem op index ",[46,6281,428],{},". Ook: gelijke waarden aan de pivot gaan ",[19,6284,2147],{}," naar\nlinks, alleen strikt kleinere.",[58,6287,6288,6293,6294,149],{},[14,6289,6290,6291,84],{},"Denken dat quicksort altijd ",[46,6292,218],{}," Met het laatste element als pivot is een\ngesorteerde invoer het slechtste geval: ",[46,6295,107],{},[38,6297,2315],{"id":2314},[55,6299,6300,6308,6320,6331,6340],{},[58,6301,6302,6303,139,6305,6307],{},"Insertion sort: na ronde ",[46,6304,2488],{},[46,6306,2462],{}," gesorteerd; snel op bijna gesorteerde data, stabiel.",[58,6309,6310,6311,6313,6314,6316,6317,6319],{},"Selection sort: na ronde ",[46,6312,2488],{}," staan de ",[46,6315,2488],{}," kleinsten vooraan; altijd ",[46,6318,107],{},", niet stabiel.",[58,6321,6322,6323,6313,6325,6327,6328,6330],{},"Bubble sort: na ronde ",[46,6324,2488],{},[46,6326,2488],{}," grootsten achteraan; ",[46,6329,107],{},", stabiel.",[58,6332,6333,6334,6336,6337,6339],{},"Merge sort: altijd ",[46,6335,218],{}," en stabiel, maar kost ",[46,6338,118],{}," extra geheugen.",[58,6341,6342,6343,6345,6346,149],{},"Quicksort (Lomuto, laatste element als pivot): gemiddeld ",[46,6344,218],{}," en in-place, slechtst ",[46,6347,107],{},[2370,6349,6350],{},"html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":373,"searchDepth":413,"depth":413,"links":6352},[6353,6354,6355,6356,6357,6358,6359,6360,6361,6362],{"id":2425,"depth":413,"text":2426},{"id":2534,"depth":413,"text":2451},{"id":3036,"depth":413,"text":2468},{"id":3626,"depth":413,"text":2494},{"id":4120,"depth":413,"text":4121},{"id":5051,"depth":413,"text":5052},{"id":6037,"depth":413,"text":6038},{"id":2397,"depth":413,"text":16},{"id":2246,"depth":413,"text":2247},{"id":2314,"depth":413,"text":2315},"Insertion, selection, bubble, merge sort en quicksort stap voor stap: tabellen per ronde, Python- en Java-code, stabiliteit en complexiteit voor je tentamen.","i-lucide-arrow-down-wide-narrow",{},"\u002Fpracticely-dsa\u002Fsorteren",{"title":2403,"description":6363},"practicely-dsa\u002Fsorteren","UIA63XLS5o3aeifdip2qZtjYjc5fIIaub0fKqIQnEWs",1793084907360]