1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
int myPartition(int* data, int length, int start, int end) { int left = start, right = end - 1; while (left < right) { while (data[left] < data[end] && left < right) left++; while (data[right] >= data[end] && left < right) right--; swap(data[left], data[right]); } if (data[left] >= data[end]) swap(data[left], data[end]); else swap(data[++left], data[end]); return left; } void myQsort(int* data, int length, int start, int end) { if (data == nullptr || length <= 0 || start >= end) return; int index = myPartition(data, length, start, end); myQsort(data, length, start, index - 1); myQsort(data, length, index + 1, end); }
|
近期评论