Тема: Швидке сортування без рекурсії(помилка)
class Program
{
public static Stack<int> st = new Stack<int>();
public static int[] random_mas;
public static int l, r;
static void Main(string[] args)
{
Random rr = new Random();
random_mas = new int[10];
for(int i = 0; i < random_mas.Length; i++)
{
random_mas[i] = rr.Next(0, 100);
Console.Write(random_mas[i] + " ");
}
l = 0;
r = random_mas.Length - 1;
st.Clear();
st.Push(l);
st.Push(r);
qsort();
Console.WriteLine();
for(int i = 0; i < random_mas.Length; i++)
{
Console.Write(random_mas[i] + " ");
}
Console.ReadKey();
}
public static void qsort()
{
int i = 0, j = 0;
while(st.Count != 0)
{
j = st.Pop();
i = st.Pop();
l = i;
r = j;
int x = random_mas[l + (r - l) / 2];
while(i <= j)
{
while(random_mas[i] < x) i++;
while(random_mas[j] > x) j--;
if(i <= j)
{
int t = random_mas[i];
random_mas[i] = random_mas[j];
random_mas[j] = t;
i++;
j--;
}
}
int a = 0;
if(i < r)
{
st.Push(i);
st.Push(r);
a = 1;
}
if(l < j & a == 0)
{
st.Push(l);
st.Push(j);
}
if(i > r && l > j)
{
st.Clear();
}
}
}
}
Допоможіть знайти помилку