From 13a5cb6b4e2ba44dd3f2fb47a9492ee8864633f8 Mon Sep 17 00:00:00 2001 From: cdez Date: Wed, 20 Sep 2023 15:52:21 -0700 Subject: [PATCH] Finished with putting up with this project. +- PA03_Main +- StateUtilities_LogN.c +- outDebug (since not fully complete) --- PA03-0920/PA03_Main | Bin 33320 -> 33320 bytes PA03-0920/StateUtilities_LogN.c | 60 +++++++++++++++++++++++++++++++- PA03-0920/build/Debug/outDebug | Bin 85040 -> 90600 bytes 3 files changed, 59 insertions(+), 1 deletion(-) diff --git a/PA03-0920/PA03_Main b/PA03-0920/PA03_Main index 75757e8ab142b07f5d5a782ee18a5a6a19251503..66e735564f7dbb581612ed2e5e45d821d0c15810 100755 GIT binary patch delta 4967 zcmZ9P3s{s@8pppm0&*DzkxU1LQ7$vUFx&(LFX82*ZwX3GT$|F25H(S=RWnv3!ZwEw z%6xTAHqF{<-PWEge9Bl8FL^5}b~P^u3J5a5SeVqqlDo72GvCKBOt zrypG#7gDmqCDi%}!sosi4H@JZcm^k}-=h7DvwhY!!{xaPo=Pr1X$K}O<=S*a`yV@A z;{{sJSTEcD%+(l0#e$x2cM9N6CERP>P_I;XFHE2el|9rc(A|k=?VQgr)af=1uB2Q} z3{FawzVYP_2o`M7TG9ju89s#YIZs~}?PbR`QssTiBQf^3NPf3#t=oKQT5y`y?kfLm zUn&hw)%v?U1Yi0xI9I;`qt!<6;otH>OV3-oc+0tIvJbsBK3KcQWy<%VnZaRN|4%dK zqKcR@+38U-+Z8erEhXPod}!w|{oc@c%Ew~y52Av&Qw-Y5APwBki#=fP<-(x7hIe_H z2kaMz+N&~oAJe%U4i9xG`mKE@1SPj8xe1Yi?Whl}oe;WUBi|sW@H(>GF3F4g&Y!yL zAJU&IS=%3#O6}WVl&oKDayT6MlI#&-boNDC!tt|W1rO{zq2agUW$q!#-m+LhuLX}Q zIfu3+FY=bGIol=c;x{B&3P67>`uov8fW97mBl?HXKZ1Td`cu$9jy}Sr4D==R>(Rd= z$r*DctJpj^liHFqyko=)>1lY?ODCF{q^XxQ$LXzL?~*dxBB?S+;|hsKa?;bd^5+!C zb8wV2yfaMF^hmO=BwLU${vvNV3;9}*FY>k`Z#fJ3T8!xH(Kn)xd@aZqd0UaUoP~TX z68ahFOOiZ)JQAKe*EKtabQVcT7)2WEOc3+SD3Od34a|%R$*7QPW>iQ6p@b@iu>T(C(lJ~#lBrMV@$y)KxMLl!+KV^ z*T=i*?XXbxRyUmtGmbgkp&4^Im8)bUupGfMc5F8VIq=y9ae z;h^}0i8MZ93VXbh7DglorjHxy`ei5WjWBw2+1y+!Z4@4v5S#@K)kPVu;0Z4n%LAR? z-PdjOY~7ZXD&Hn#z*Q^~h#V{j!iMuwf1NE*HdnD@_ zd?+*BO&@pAe#3Zn_ZA&9B+hIb<2L%qTh6FnCF(PGQz{0;5trm#zI{Q?*AExv#aonM zjPx&dcYXX86&O=}X3fDn|EcHHIrP3U+-CxMlI%HV4qY%#X7#hlCn{z1{&r_Ey8ZcK z;^+0XcA6iR&K{aguSSKlrZzepRl>CGlpLMo5!;4pzBw_TK8=oLy)&sj`V@cq_c+qRH_2q6!WdsN#YVHz z2WU~OK5)yZq3#{cR31B>*_!EmtjNyKpaAm(_DM6vnfEc@8T6ewecYuRd^tTY7TbjN z6P%0cIIE`xK<0p;fzqSy$={kRg zMCT|bxAu!oG%8^>`^!{Xn2^AZG?6u7+W4+U_XCXqmAiwY2TY}wglN{*NFx&e$vUn% zZ-^H@thgZ>j)BwlV59SfL^jgYB*XnV*M2i#0LI#sMlU2qv7BodE0j(pZDlJOoY!R! zZjk#PTxg(ICmTHaue$C)82xv05ZiZ^Mkkxtp;VfgY|Kc38P6#ec@Ed%ZG3sv>rf2C z%f~nP;c<;oUe@`lQ|X}7qO0`x;OzS@}brq?GK&8%c)lfz;15QI`N8{7^S zg71M9;2%)RgWx`}4)nmj*}-&B>nR9ZKofYQ8S$W@74hKnU%hF5hzBb{ zt(Q$e~w1Y{wf7;=K@GfWqHMn%ypbabp zBk_1tfcwFN;7Ghhb>KqK4wivh?-D^cgoX*faJ~n#!C%2ba3LPO3a}PD2tL(~0l+Pw z9n{+~0P5?9_tpen0<*#Qe?UAq`A5WqdwLKLUIpvGad!|8T0re$oP<}>JPoM&i4{e_!te3&EbBt83`o)418bU)atM2&iHd-oO~^WgH8fETkb9jPfUN7(4?K3AbiWH> zbe+uLgn4#QIuOx879g{OihxHus0#S3gKB_y8#MrVHtGjnwUI6-gk7*vI*`*z7T|?W zDgyR&QWfy;PO1U)UDN^BL6~6`=@wRsDNapPr-$8LECq)&H9~RQJQS z^J!{g$g<4LjwMm~vL(9roX1cQveoDc?!`t4`Dw%o%(}Ic6@8CtKCBM1Ba*UUE{|69 zBGufhnp-E*j)F|q8cPj)5OpbEt6sTyX?Z3=CYrR|oVF}V(K}T0Zq?iystC@Thvo;W z&L%2)0a=$D61|g^-h2hZRn=>S>ZPtvxUK5xMrvJd);$-a_)BV-9YG$OJDT2Ek;%NHs0-0&)U8tI5IR+_*ddSTH50X>LcMDC(JTJW*AvYqRgX0&`oOk#sd{@T zRjoEBeyy6HCQ$$C0v63EZ_Nx{jar43s#mS*Wl5%*HA`4| cYPD|d8h`fJNGjiA_RUXI+;E*wZYdb{f6wfrp8x;= delta 4045 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 Up#ysifjaT>;5vV`r)0{100`wD#sB~S diff --git a/PA03-0920/StateUtilities_LogN.c b/PA03-0920/StateUtilities_LogN.c index 54a18ee..5cc57c7 100644 --- a/PA03-0920/StateUtilities_LogN.c +++ b/PA03-0920/StateUtilities_LogN.c @@ -362,8 +362,20 @@ Dependencies: as needed */ void reverseArray( StateArrayType *stateArray ) { + int arrayIterator; + StateDataType tempState; // reverse in place? could use swap elements to make this happen. // use a for loop? + for(arrayIterator = 0; arrayIterator < stateArray->size / 2; arrayIterator++) + { + // store the state data + tempState = stateArray->array[arrayIterator]; + // swap the element from the 'outer edges' and swap them + // takes from the 'last' element + stateArray->array[arrayIterator] = stateArray->array[stateArray->size - arrayIterator - 1]; + // takes from the temp, which came from 'first' element + stateArray->array[stateArray->size - arrayIterator - 1] = tempState; + } // no return, void } @@ -442,8 +454,41 @@ Dependencies: as needed */ int runPartition( StateArrayType *stateArray, int lowIndex, int highIndex ) { + int partitionIndex, workingLowIndex, workingHighIndex, partitionIterator, originalPivot; + // Identify the partition value at the beginning + // of the array segment (at lowIndex) + workingLowIndex = lowIndex; + workingHighIndex = highIndex; + partitionIndex = lowIndex; + originalPivot = lowIndex; + + // set the working index and the pivot index + // to the low index parameter + + for(partitionIterator = workingLowIndex; partitionIterator < highIndex - 1; partitionIterator++) + { + // Start a loop across the the array segment + // from the low index to the high index, inclusive + // This will use the working index + if(stateArray->array[partitionIterator].population < stateArray->array[partitionIndex].population) + { + // check if the value at the current working index + // is less than the original pivot value + + // increment the pivot index + partitionIndex = partitionIndex + 1; + + // swap the value at the working index + // with the value at the pivot index + swapElements(stateArray->array, partitionIterator, partitionIndex); + } + // end working loop + } + // Swap the original pivot value (at the low index) + // with the value at the current pivot index + swapElements(stateArray->array, originalPivot, partitionIterator); // return zero (temporarily) - return 0; + return partitionIndex; } /* @@ -460,6 +505,7 @@ Dependencies: as needed */ void runQuickSortByPopulation( StateArrayType *stateArray ) { + runQuickSortHelper(stateArray, 0, stateArray->size); // no return, void } @@ -480,6 +526,18 @@ Dependencies: as needed void runQuickSortHelper( StateArrayType *stateArray, int lowIndex, int highIndex ) { + int currentPartition; + // check to see if the lowIndex is less than the highIndex + // (meaning more than one item in list) + if(lowIndex < highIndex) + { + // use runPartition to get pivot and index of pivot + currentPartition = runPartition(stateArray, lowIndex, highIndex); + // use runQuickSortHelper and use lowIndex and pivot - 1 to get left list + runQuickSortHelper(stateArray, lowIndex, currentPartition - 1); + // use runQuickSortHelper and use pivot + 1 and highIndex to get right list + runQuickSortHelper(stateArray, currentPartition + 1, highIndex); + } // no return, void } diff --git a/PA03-0920/build/Debug/outDebug b/PA03-0920/build/Debug/outDebug index fc5b29a7af43412432e771f4dbf5bd431dc78d1f..2d1fcd42a91b5f0094e4ecc403f89e2c1f75876e 100755 GIT binary patch delta 18139 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 X!I9HNT6Ku)JgZ)vr&ZUoaZUL@X26KQ delta 13442 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