public class MarvellousArray<T>
public MarvellousArray(int size)
Console.WriteLine("Enter Elemens of Array : ");
for(int i=0;i<arr.Length;i++)
string input = Console.ReadLine();
arr[i]=(T)Convert.ChangeType(input, typeof(T));
for(int i=0;i<arr.Length;i++)
Console.WriteLine("Element {0} is : {1}",i,arr[i]);
for(int i=0;i<arr.Length-1;i++)
for(int j=i+1;j<arr.Length;j++)
public void InsertionSort()
for (int i = 1; i < arr.Length; i++)
while (j >= 0 && temp > key)
public void LinearSearch(T value1)
for (i = 0; i < arr.Length; i++)
Console.WriteLine("Element found at pos : "+(i+1));
Console.WriteLine("Element not found");
public void LinearSearchBidirectional(T value1)
for (i = 0,j=arr.Length-1; i < j; i++,j--)
Console.WriteLine("Element found at pos : "+(i+1));
Console.WriteLine("Element found at pos : "+(j+1));
Console.WriteLine("Element not found");
public void SelectionSort()
for (int i = 0; i < arr.Length - 1; i++)
for (int j = i + 1; j < arr.Length; j++)
dynamic b=arr[min_index];
public void BinarySearch(T value1)
Console.WriteLine("Value found at pos : "+(mid+1));
Console.WriteLine("Value not found ");
public static void Main()
Console.WriteLine("Enter the Size of Array");
int Size=Convert.ToInt32(Console.ReadLine());
MarvellousArray<int> mobj1=new MarvellousArray<int>(Size);
Console.WriteLine("After Bubble Sort : ");
Console.WriteLine("After Insertion Sort : ");
Console.WriteLine("After Selection Sort : ");
Console.WriteLine("Enter Element for Linear search : ");
int value1=Convert.ToInt32(Console.ReadLine());
mobj1.LinearSearch(value1);
Console.WriteLine("Enter Element for Linear Bidirectional search : ");
int value2=Convert.ToInt32(Console.ReadLine());
mobj1.LinearSearchBidirectional(value2);
Console.WriteLine("Enter Element for Binary search : ");
int value3=Convert.ToInt32(Console.ReadLine());
mobj1.BinarySearch(value3);
MarvellousArray<double> mobj2=new MarvellousArray<double>(Size);
Console.WriteLine("After Bubble Sort : ");
Console.WriteLine("After Insertion Sort : ");
Console.WriteLine("After Selection Sort : ");
Console.WriteLine("Enter Element for Linear search : ");
double value4=Convert.ToDouble(Console.ReadLine());
mobj2.LinearSearch(value4);
Console.WriteLine("Enter Element for Linear Bidirectional search : ");
double value5=Convert.ToDouble(Console.ReadLine());
mobj2.LinearSearchBidirectional(value5);
Console.WriteLine("Enter Element for Binary search : ");
double value6=Convert.ToDouble(Console.ReadLine());
mobj2.BinarySearch(value6);