# This is a simple programming assignment to implement insertion sort algorithm and to observe its worst-case, best-case, and average-case performance. The performance measurement is in terms of the...

PLEASE USE C! look at screenshots for assignment

This is a simple programming assignment to implement insertion sort algorithm and to observe its worst- case, best-case, and average-case performance. The performance measurement is in terms of the number of key-comparisons, rather than the actual running time. Implement insertion-sort algorithm without use of recursion. (A recursive implementation of insertion sort for large size n may cause run-time stack overflow.) To keep track of the number of key-comparisons, it is recommended that the sorting algorithm makes use of a Boolean function SMALLER(A, i,j) to do the following: « Increment a global counter, COMPCOUNT, to keep track of the number of key-comparisons per- formed by the algorithm. (This count is initialized to 0 at the beginning of the algorithm.) » Perform a comparison between Afi] and A[j]. Return TRUE if Ali] < a[j]. otherwise, return false. carry out the following experiments. 1 small-size array, n = 32. run the algorithm for n = 32 and for each of the following cases: (1) worst-case data input; (2) best-case data input; (3) random data input. (performance on random data represents average-case.) for each case, print n, input array, output array (sorted data), and the number of key-comparisons. does the number of key-comparisons agree with the theoretical values? theoretically, the worst-cse number of key comparisons is (n? — n)/2, and the average number is (n® — n)/4, which is half of the worst-case. 2 increasing array sizes, n = 100, n = 1000, n = 10000. run the algorithm for each of these increasing array sizes and for random data input. for each case, print n and the resulting number of key-comparisons. (note that for large n, it is not practical to print the actual input/output arrays! also, since the algorithm has o(n?) time complexity, an array size larger than 10000 may not be practical.) does the number of key-comparisons show o(n?) performance? that is, when the array size is increased by a factor of 10, does the number of operations (comparisons) increase by approximately a factor of 100? what is the constant factor for the o(n?) performance? note: theoretically, the average number of key-comparisons for insertion sort is (n? — n)/4. therefore, for large n, the number of comparisons should be approximately n?/4. your program must be in c, c++, or java. submit your program on canvas as followd: 1. the source code of your program. (the ta needs to visually read your program to evaluate it, and also run the program to verify that it works.) 2. the output as produced by your program. 3. a short discussion of the results, tabulating the results, and comparing them with the theoretical values. a[j].="" otherwise,="" return="" false.="" carry="" out="" the="" following="" experiments.="" 1="" small-size="" array,="" n="32." run="" the="" algorithm="" for="" n="32" and="" for="" each="" of="" the="" following="" cases:="" (1)="" worst-case="" data="" input;="" (2)="" best-case="" data="" input;="" (3)="" random="" data="" input.="" (performance="" on="" random="" data="" represents="" average-case.)="" for="" each="" case,="" print="" n,="" input="" array,="" output="" array="" (sorted="" data),="" and="" the="" number="" of="" key-comparisons.="" does="" the="" number="" of="" key-comparisons="" agree="" with="" the="" theoretical="" values?="" theoretically,="" the="" worst-cse="" number="" of="" key="" comparisons="" is="" (n?="" —="" n)/2,="" and="" the="" average="" number="" is="" (n®="" —="" n)/4,="" which="" is="" half="" of="" the="" worst-case.="" 2="" increasing="" array="" sizes,="" n="100," n="1000," n="10000." run="" the="" algorithm="" for="" each="" of="" these="" increasing="" array="" sizes="" and="" for="" random="" data="" input.="" for="" each="" case,="" print="" n="" and="" the="" resulting="" number="" of="" key-comparisons.="" (note="" that="" for="" large="" n,="" it="" is="" not="" practical="" to="" print="" the="" actual="" input/output="" arrays!="" also,="" since="" the="" algorithm="" has="" o(n?)="" time="" complexity,="" an="" array="" size="" larger="" than="" 10000="" may="" not="" be="" practical.)="" does="" the="" number="" of="" key-comparisons="" show="" o(n?)="" performance?="" that="" is,="" when="" the="" array="" size="" is="" increased="" by="" a="" factor="" of="" 10,="" does="" the="" number="" of="" operations="" (comparisons)="" increase="" by="" approximately="" a="" factor="" of="" 100?="" what="" is="" the="" constant="" factor="" for="" the="" o(n?)="" performance?="" note:="" theoretically,="" the="" average="" number="" of="" key-comparisons="" for="" insertion="" sort="" is="" (n?="" —="" n)/4.="" therefore,="" for="" large="" n,="" the="" number="" of="" comparisons="" should="" be="" approximately="" n?/4.="" your="" program="" must="" be="" in="" c,="" c++,="" or="" java.="" submit="" your="" program="" on="" canvas="" as="" followd:="" 1.="" the="" source="" code="" of="" your="" program.="" (the="" ta="" needs="" to="" visually="" read="" your="" program="" to="" evaluate="" it,="" and="" also="" run="" the="" program="" to="" verify="" that="" it="" works.)="" 2.="" the="" output="" as="" produced="" by="" your="" program.="" 3.="" a="" short="" discussion="" of="" the="" results,="" tabulating="" the="" results,="" and="" comparing="" them="" with="" the="" theoretical="">
Answered 6 days AfterJan 28, 2023

## Answer To: This is a simple programming assignment to implement insertion sort algorithm and to observe its...

Vikas answered on Jan 30 2023
SOLUTION.PDF