using System.Collections.Generic;
public void Sort(int[] A, int i, int j, int[] B, int k)
public void Sort(int[] A, int i, int j, int k, int[] B, int z)
public void Sort(int[] A, int i, int j, int k, int l, int[] B, int z)
Sort(A, T[0], T[2], U, 0);
Sort(A, U[1], T[1], T[3], B, z+1);
public void Sort(int[] A, int i, int j, int k, int l, int m, int[] B, int z)
Sort(A, T[0], T[2], m, U, 0);
Sort(A, U[1], U[2], T[1], T[3], B, z+1);
public void Sort(int[] A, int i, int j, int k, int l, int m, int n, int[] B, int z)
Sort(A, T[0], T[2], T[4], U, 0);
Sort(A, U[1], U[2], T[1], T[3], T[5], B, z+1);
public void Sort(int[] A, int i, int j, int k, int l, int m, int n, int o, int[] B, int z)
Sort(A, T[0], T[2], T[4], o, U, 0);
Sort(A, U[1], U[2], U[3], T[1], T[3], T[5], B, z+1);
public void Sort(int[] A, int i, int j, int k, int l, int m, int n, int o, int p, int[] B, int z)
Sort(A, T[0], T[2], T[4], T[6], U, 0);
Sort(A, U[1], U[2], U[3], T[1], T[3], T[5], T[7], B, 1);
int[] B = new int[A.Length];
Sort(A, 0, 1, 2, 3, B, 0);
Sort(A, 0, 1, 2, 3, 4, B, 0);
Sort(A, 0, 1, 2, 3, 4, 5, B, 0);
Sort(A, 0, 1, 2, 3, 4, 5, 6, B, 0);
Sort(A, 0, 1, 2, 3, 4, 5, 6, 7, B, 0);
int[] R = new int[A.Length];
for (int i = 0; i < A.Length; i++)
for (int i = 0; i < A.Length; i++)
List<List<int>> Permute(List<int> A)
if (A.Count == 1) return new List<List<int>> { new List<int> { A[0] } };
List<List<int>> result = new List<List<int>>();
for (int i = 0; i < A.Count; i++)
foreach (var list in temp)
public bool Sorted(int[] d)
if (d.Length == 0 || d.Length == 1) return true;
for (var i = 1; i < d.Length; i++)
if (d[i] >= d[i - 1]) return false;
public static void Main()
Program p = new Program();
var perms = p.Permute(Enumerable.Range(1, 3).ToList());
Console.WriteLine("Unsorted");
var perms4 = p.Permute(Enumerable.Range(1, 4).ToList());
foreach (var l in perms4)
Console.WriteLine("Unsorted");
var perms5 = p.Permute(Enumerable.Range(1, 5).ToList());
foreach (var l in perms5)
Console.WriteLine("Unsorted");
var perms6 = p.Permute(Enumerable.Range(1, 6).ToList());
foreach (var l in perms6)
Console.WriteLine("Unsorted");
var perms7 = p.Permute(Enumerable.Range(1, 7).ToList());
foreach (var l in perms6)
Console.WriteLine("Unsorted");
var perms8 = p.Permute(Enumerable.Range(1, 8).ToList());
foreach (var l in perms8)
Console.WriteLine("Unsorted");