class QuickSort

{
public void Sort(int[] data, int start, int end)

{
if (start >= end) return;
if (start + 1 == end)

{
if (data[start] > data[end])
Swap(data, start, end);

return;
}

int indexL = start + 1, indexR = end;
while (indexL < indexR)

{
// Get from left
while (indexL <= end && data[start] >= data[indexL])
indexL++;

// Get from right
while (indexR > start && data[start] < data[indexR])
indexR--;

if (indexL < indexR)

{
Swap(data, indexR, indexL);
}
}

if(indexL-1 !=start)
Swap(data, start, indexL - 1);


Sort(data, start, indexL - 2);
Sort(data, indexL, end);
}

private void Swap(int[] data, int x, int y)

{
data[x] = data[x] + data[y];
data[y] = data[x] - data[y];
data[x] = data[x] - data[y];
}
}

posted on
2008-03-31 18:24
Jack Niu
阅读(
930)
评论()
收藏
举报