/// <summary>
/// 数组分割,left为0 right为数组长度减1,即数组中最后一个数的索引
/// </summary>
static int Division(int[] array,int left,int right)
{
while (left<right)
{
int num = array[left]; //假设先将首元素做为分割位置
if (num>array[left+1])
{
array[left] = array[left + 1];
array[left + 1] = num;
left++;
}
else
{
int temp = array[right];
array[right] = array[left + 1];
array[left + 1] = temp;
right--;
}
}
return left; // 确定返回最终的分割位置
}
static void QuickSort(int[] array, int left, int right)
{
if (left<right)
{
int i = Division(array, left, right);
QuickSort(array, i + 1, right); //分割位置右边排序
QuickSort(array, left, i - 1); //分割位置左边排序
}
}
C# 快速排序
最新推荐文章于 2024-05-21 23:56:53 发布