public static void Main(string[] args)
static void Swap(ref int first, ref int second){
static void BubbleSorting() {
Console.WriteLine("Enter number of array's elements");
int length =int.Parse(Console.ReadLine());
int[] array = new int[length];
Console.WriteLine("Enter array's elements");
for (int i = 0; i < length; i++)
array[i] =int.Parse(Console.ReadLine());
Console.Write("Your array will be : ");
foreach (int arr in array) {
Console.Write(arr + " ");
for (int i = 0; i < length; i++) {
for (int j = 0; j < length - 1; j++) {
if (array[j] >= array[j + 1]) {
Swap(ref array[j], ref array[j+1]);
Console.Write("Bubble Sorted array is: ");
foreach (int arr in array)
Console.Write(arr + " ");
static void Insertion() {
Console.WriteLine("Enter number of array's elements");
int length = int.Parse(Console.ReadLine());
int[] array = new int[length];
Console.WriteLine("Enter array's elements");
for (int i = 0; i < length; i++)
array[i] = int.Parse(Console.ReadLine());
Console.Write("Your array will be : ");
foreach (int arr in array)
Console.Write(arr + " ");
for (int i = 0; i < length-1; i++) {
for (int j = i+1; j > 0; j--) {
if (array[j] < array[j-1]) {
Swap(ref array[j] , ref array[j-1]);
Console.Write("Insertion Sorted array is: ");
foreach (int arr in array)
Console.Write(arr + " ");
static void Selection() {
Console.WriteLine("Enter number of array's elements");
int length = int.Parse(Console.ReadLine());
int[] array = new int[length];
Console.WriteLine("Enter array's elements");
for (int i = 0; i < length; i++)
array[i] = int.Parse(Console.ReadLine());
Console.Write("Your array will be : ");
foreach (int arr in array)
Console.Write(arr + " ");
for (int i = 0; i < length; i++) {
for (int j = i + 1; j < length; j++) {
if (array[j] < array[minIndex]) {
Swap( ref array[i], ref array[minIndex]);
Console.Write("Selection Sorted array is: ");
foreach(int arr in array){
Console.Write(arr + " ");
static int[] Merge( int[] array){
int length = array.Length;
int[] leftSubArr = new int[ll];
foreach (int arr in leftSubArr)
Console.Write(arr + " ");
int[] rightSubArr = new int[rl];
foreach (int arr in rightSubArr)
Console.Write(arr + " ");
leftSubArr = Merge( leftSubArr);
rightSubArr = Merge( rightSubArr);
return Sort( leftSubArr, rightSubArr);
static int[] Sort( int[] leftArr, int[] rightArr){
int rl = rightArr.Length;
bool condition = (ll >= rl);
int? max = condition ? ll : rl;
int[] sortedArr = new int[ll + rl];
for( int i = 0; i < sortedArr.Length; i++){
if(leftArr[l] <= rightArr[r]){
sortedArr[i] = leftArr[l];
sortedArr[i] = rightArr[r];
sortedArr[i] = rightArr[r];
sortedArr[i] = leftArr[l];
static void MergeSorting(){
Console.WriteLine("Enter number of array's elements");
int length = int.Parse(Console.ReadLine());
int[] array = new int[length];
Console.WriteLine("Enter array's elements");
for (int i = 0; i < length; i++)
array[i] = int.Parse(Console.ReadLine());
Console.Write("Your array is: ");
foreach (int arr in array)
Console.Write(arr + " ");
int[] newarr = Merge( array);
Console.Write("Merge Sorted array is: ");
foreach (int arr in newarr )
Console.Write(arr + " ");
static int PartitionByPivot(ref int[] array, int firstInd, int lastInd){
int pivot = array[lastInd];
int i = (firstInd - 1), j;
for(j = 0; j < lastInd; j++){
Swap(ref array[i], ref array[j]);
Swap(ref array[lastInd],ref array[i+1]);
static void Quick(ref int[] arr, int first, int last){
int pivotInd = PartitionByPivot(ref arr, first, last);
Quick(ref arr, first, pivotInd-1);
Quick(ref arr, pivotInd+1, last);
static void QuickSorting(){
Console.WriteLine("Enter number of array's elements");
int length = int.Parse(Console.ReadLine());
int[] array = new int[length];
Console.WriteLine("Enter array's elements");
for (int i = 0; i < length; i++)
array[i] = int.Parse(Console.ReadLine());
Console.Write("Your array is: ");
foreach (int arr in array)
Console.Write(arr + " ");
Quick(ref array, 0, length-1);
Console.Write("Quick Sorted array is: ");
foreach (int arr in array )
Console.Write(arr + " ");