From 1169a2607e27532f9ecbad6b7a602ab8dfeabc92 Mon Sep 17 00:00:00 2001 From: cdez Date: Tue, 12 Sep 2023 23:06:01 -0700 Subject: [PATCH] Complete PA02 +- PA02_Main +- PA02_Main.c +- StateUtilities.c ++ outRelease (precompiled for UNIX systems) --- PA02-0913/PA02_Main | Bin 33200 -> 33200 bytes PA02-0913/PA02_Main.c | 6 +- PA02-0913/StateUtilities.c | 88 +++++++++++++++++++---------- PA02-0913/build/Release/outRelease | Bin 0 -> 37208 bytes 4 files changed, 61 insertions(+), 33 deletions(-) create mode 100755 PA02-0913/build/Release/outRelease diff --git a/PA02-0913/PA02_Main b/PA02-0913/PA02_Main index 226f7e253a237cfc8f783bfa5582704f26d87104..cf539d212af1de625ddf518efa065afacda8e308 100755 GIT binary patch delta 6347 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 == 0 || - stateNameFoundFlag == 1) + stateNameFoundFlag) { // set the flag to signify found value stateNameFoundFlag = true; @@ -406,29 +403,19 @@ void runBubbleSortByName( StateDataType *array, int size ) { int bubbleCount; int arrayCount; - printf("\nArray @ 0: %s\n", array[0].name); - printf("\nArray @ 1: %s\n", array[1].name); - printf("\nArray @ 2: %s\n", array[2].name); - printf("\nArray @ 3: %s\n", array[3].name); - printf("\nArray @ 4: %s\n", array[4].name); - printf("\nArray @ size: %s\n", array[size].name); // use two for loops to iterate through array - // for(bubbleCount = 0; bubbleCount < size - 1; bubbleCount++) - // { - // for(arrayCount = bubbleCount + 1; arrayCount < size; arrayCount++) - // { - // printf("\nValue of bubbleCount: %d\n", bubbleCount); - // printf("\nValue of arrayCount: %d\n", arrayCount); - // //printf("\nValue of array[arrayCount].name: %s", array[0].name); - // //printf("\nValue of array[arrayCount + 1].name: %s\n", array[1].name); - // // check the current index vs the next one. - // if(strcmp(array[arrayCount].name, array[arrayCount + 1].name) > 0) - // { - // // if current > next, swap. AKA: strcmp(current, next) > 0 - // swapElements(array, arrayCount, arrayCount + 1); - // } - // } - // } + for(bubbleCount = 0; bubbleCount < size - 1; bubbleCount++) + { + for(arrayCount = 0; arrayCount < size - bubbleCount - 1; arrayCount++) + { + // check the current index vs the next one. + if(strcmp(array[arrayCount].name, array[arrayCount + 1].name) > 0) + { + // if current > next, swap. AKA: strcmp(current, next) > 0 + swapElements(array, arrayCount, arrayCount + 1); + } + } + } // no return, void } @@ -444,6 +431,28 @@ Dependencies: as needed, swap may not be used */ void runInsertionSortByPopulation( StateDataType *array, int size ) { + // define variables + int insertCount, insertIterator; + StateDataType insertStoreState; + // use a for loop to move through the array + for(insertCount = 0; insertCount < size; insertCount++) + { + // start the iterator at the same place where insertCount starts + insertIterator = insertCount; + // use a while loop to do the insert sort + while(insertIterator > 0 && (array[insertIterator - 1].population >= + array[insertIterator].population)) + { + // store the element + deepCopy(&insertStoreState, array[insertIterator - 1]); + // move the next element to the last location + deepCopy(&array[insertIterator - 1], array[insertIterator]); + // put the element into the array + deepCopy(&array[insertIterator], insertStoreState); + // move the iterator to the previous index + insertIterator = insertIterator - 1; + } + } // no return, void } @@ -459,6 +468,25 @@ Dependencies: as needed */ void runSelectionSortByGrowth( StateDataType *array, int size ) { + int selectCount, selectIterator, smallestGrowth; + // use for loop to run through the whole array + for(selectCount = 0; selectCount < size; selectCount++) + { + // start at the not sorted part of the array + smallestGrowth = selectCount; + // use another for loop to find what the smallest growth is + for(selectIterator = selectCount + 1; selectIterator < size; selectIterator++) + { + // select the smallest growth + if(array[selectIterator].growth < array[smallestGrowth].growth) + { + // find the smallest growth of the array. + smallestGrowth = selectIterator; + } + } + // swap the elements of the array + swapElements(array, selectCount, smallestGrowth); + } // no return, void } diff --git a/PA02-0913/build/Release/outRelease b/PA02-0913/build/Release/outRelease new file mode 100755 index 0000000000000000000000000000000000000000..2c0c71b329322b8b7972722d1b87d9529d225136 GIT binary patch literal 37208 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