我将数据库更改为数组中的第一个元素,这个Quicksort算法仍然可以吗?变量" l"在数据数组中是所有分区步骤中的第一个元素吗?
x = data [l] // pivot
感谢
public void QuickSort(int[] data)
{
QuickSort(data, 0, data.Length - 1);
}
private void QuickSort(int[] data, int l, int r)
{
int i, j;
int x;
i = l;
j = r;
x = data[l];
while (true)
{
while (data[i] < x)
{
i++;
}
while (data[j] > x)
{
j--;
}
if (l <= j)
{
int temporary = data[i];
data[i] = data[j];
data[j] = temporary;
i++;
j--;
}
if (i > j)
{
break;
}
}
if (l < j)
{
QuickSort(data, l, j);
}
if (i < r)
{
QuickSort(data, i, r);
}
}
答案 0 :(得分:0)
static public int Partition(int[] numbers, int left, int right)
{
int pivot = numbers[left];
while (true)
{
while (numbers[left] < pivot)
left++;
while (numbers[right] > pivot)
right--;
if (left < right)
{
int temp = numbers[right];
numbers[right] = numbers[left];
numbers[left] = temp;
}
else
{
return right;
}
}
}
static public void QuickSort(int[] arr, int left, int right)
{
// For Recusrion
if (left < right)
{
int pivot = Partition(arr, left, right);
if (pivot > 1)
QuickSort(arr, left, pivot - 1);
if (pivot + 1 < right)
QuickSort(arr, pivot + 1, right);
}
}
你的逻辑不合适尝试这个逻辑首先理解它与你的相似但略有不同