using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
namespace TestCSharp
{
class Program
{
static void Main(string[] args)
{
List<int> list = new List<int> { 2, 4, 1, 3, 8, 5, 7, 6 };
Sort(list, 0, list.Count - 1);
//SortIterator(list, 0, list.Count - 1);
string s = "";
for (int i = 0, length = list.Count; i < length; i++)
{
s += list[i] + ", ";
}
Console.WriteLine(s);
Console.ReadKey();
}
static void Sort(List<int> list, int left, int right)
{
if (left >= right)
{
return;
}
int i = left;
int j = right;
int pivot = list[i];
while (i < j)
{
while (j > i && list[j] >= pivot)
{
j--;
}
list[i] = list[j];
while (i < j && list[i] <= pivot)
{
i++;
}
list[j] = list[i];
}
list[i] = pivot;
Sort(list, left, i - 1);
Sort(list, j + 1, right);
}
static void SortIterator(List<int> list, int start, int end)
{
if (start >= end)
{
return;
}
Stack<int> stack = new Stack<int>();
stack.Push(start);
stack.Push(end);
while (stack.Count > 0)
{
int max = stack.Pop();
int min = stack.Pop();
if (min >= max)
{
continue;
}
int i = min;
int j = max;
int pivot = list[i];
while (i < j)
{
while (j > i && list[j] >= pivot)
{
j--;
}
list[i] = list[j];
while (i < j && list[i] <= pivot)
{
i++;
}
list[j] = list[i];
}
list[i] = pivot;
stack.Push(j + 1);
stack.Push(max);
stack.Push(min);
stack.Push(i - 1);
}
}
}
}
版权声明:本文为qq_37273889原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。