In this problem we want to create a set of useful functions for arrays. These functions can then be used elsewherewhen needed in further labs or other programs you create in future. In this we are also going to look at handlingarrays using pointers and using pointer arithmetic to iterate through the values.In this task we are going to look at the following: copying, sorting and searching.The main function in this problem does not serve any particular function other than testing out these functions andcommunicating with the user. It can be modified to suit your needs.CopyingWe cannot directly copy an array using assignment in C. So to copy we need to allocate the space required for thecopy, and then copy each value into the new array.SortingAn array is an unsorted list of values, however it is often helpful to have the array in sorted list for further operations.In this program we want to leave the original list in the order it is in, and put a copy (using above) into an ordered list.There are many sorting algorithms that can be used, if interested follow this link(https://www.toptal.com/developers/sorting-algorithms). Each algorithm has different advantages and disadvantages.We will be looking at a simple sorting algorithm known as Bubble sort.Bubble sort works by iteratively passing through the list and checks each adjacent pair and swaps if in the incorrectorder. There are n-1 passes (not optimized), and because the largest item in the iteration/pass will always end up atthe end of the list in that iteration, we need not iterate over it in the following iteration/pass.