Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
Merge Sort
Language:
Ada
Assembly
Bash
C#
C++ (gcc)
C++ (clang)
C++ (vc++)
C (gcc)
C (clang)
C (vc)
Client Side
Clojure
Common Lisp
D
Elixir
Erlang
F#
Fortran
Go
Haskell
Java
Javascript
Kotlin
Lua
MySql
Node.js
Ocaml
Octave
Objective-C
Oracle
Pascal
Perl
Php
PostgreSQL
Prolog
Python
Python 3
R
Rust
Ruby
Scala
Scheme
Sql Server
Swift
Tcl
Visual Basic
Layout:
Vertical
Horizontal
//Rextester.Program.Main is the entry point for your code. Don't change it. //Compiler version 4.0.30319.17929 for Microsoft (R) .NET Framework 4.5 using System; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; namespace Rextester { public class Program { public static void Main(string[] args) { /* Merge Sort is one of the popular sorting algorithms in C# as it uses the minimum number of comparisons. The idea behind merge sort is that it is merging two sorted lists. MergeSort is a divide-and-conquer algorithm that splits an array into two halves (sub arrays) and recursively sorts each sub array before merging them back into one giant, sorted array. */ int[] numbers = { 12, 19, 15, 8, 4, 6, 3, 29, 9, 2, 22, 44, 20, 25 }; int len = numbers.Length; Mergesort merge = new Mergesort(); Console.WriteLine("before sort"); merge.Display(numbers); Console.WriteLine("MergeSort By Recursive Method"); merge.MergeSort_Recursive(numbers, 0, len - 1); merge.Display(numbers); }Merge Sort } public class Mergesort { public void MergeSort_Recursive(int [] numbers, int left, int right) { int mid; if (right > left) { mid = (right + left) / 2; MergeSort_Recursive(numbers, left, mid); MergeSort_Recursive(numbers, (mid + 1), right); DoMerge(numbers, left, (mid+1), right); } } public void DoMerge(int [] numbers, int left, int mid, int right) { int [] temp = new int[25]; int i, left_end, num_elements, tmp_pos; left_end = (mid - 1); tmp_pos = left; num_elements = (right - left + 1); while ((left <= left_end) && (mid <= right)) { if (numbers[left] <= numbers[mid]) temp[tmp_pos++] = numbers[left++]; else temp[tmp_pos++] = numbers[mid++]; } while (left <= left_end) temp[tmp_pos++] = numbers[left++]; while (mid <= right) temp[tmp_pos++] = numbers[mid++]; for (i = 0; i < num_elements; i++) { numbers[right] = temp[right]; right--; } } public void Display(int []arr) { int n = arr.Length; for (int i = 0; i < n; ++i) Console.Write(arr[i] + " "); Console.WriteLine(); } } }
Show compiler warnings
[
+
]
Show input
Compilation time: 0,19 sec, absolute running time: 0,14 sec, cpu time: 0,12 sec, average memory usage: 15 Mb, average nr of threads: 3, absolute service time: 0,35 sec
edit mode
|
history
|
discussion
before sort 3 8 7 5 2 1 9 6 4 MergeSort By Recursive Method 1 2 3 4 5 6 7 8 9