Design a program to implement two sorting algorithms, namely 2-Way Merge Sort and Quick Sort, using functions with call by address. The program should take a set of data as input and sort it using both algorithms. The sorted results should be stored in a file.
Furthermore, the program should analyze the time complexity of each sorting algorithm in both worst and best-case scenarios using various sets of data. Additionally, the number of swaps performed by each sorting algorithm in both worst and best-case scenarios should be recorded.
In summary, the program should accomplish the following tasks:
Implement 2-Way Merge Sort and Quick Sort algorithms using functions with call by address.
Sort a given set of data using both sorting algorithms and store the sorted results in a file.
Analyze the worst, Avaerage and best-case time complexity of each sorting algorithm using different sets of data
Develop a program to create a Generalized Binary Tree using both an array and a linked list. Additionally, implement different traversal mechanisms such as Inorder, Preorder, and Postorder. Furthermore, display each recursion call and present it in a table format.
In summary, the program should accomplish the following tasks:
Create a Generalized Binary Tree using both array and linked list representations.
Implement traversal mechanisms including Inorder, Preorder, and Postorder.
Display each recursion call during traversal and present it in a tabular format.