本帖最后由 马山闪 于 2014-4-3 09:44 编辑
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _02快速排序
{
class Program
{
static void Main(string[] args)
{
int[] array = { 1, 3, 4, 7, 2, 7, 9, 0, -13 };
Sort(array, 0, array.Length - 1);
foreach (var item in array)
{
Console.Write(item + " ");
}
Console.ReadKey();
}
public static int GetIndex(int[] array, int left, int right)
{
//这里的算法是从最左边开始算的
int temp = array[left];//temp为基准值
while (left < right)
{
for (int i = right; i >= left; i--)//从右边开始比较
{
if (array < temp)
{
array[left] = array;
break;
}
}
for (int i = left; i < right; i++)//从左边开始比较
{
if (array > temp)
{
array[right] = array;
break;
}
}
right--;
left++;
}
array[left] = temp;
return left ;
}
public static void Sort(int[] array, int left, int right)
{
if (left < right)
{
//按基准值分成两个数组再继续排序
int temp = GetIndex(array, left, right);
Sort(array, left, temp - 1);
Sort(array, temp + 1, right);
}
}
}
}
|