求大神指教,我这个快排哪里出了问题运行不出结果
// sort.cpp : 定义控制台应用程序的入口点。//
#include "stdafx.h"
// 测试快排.cpp : 定义控制台应用程序的入口点。
//
#include<vector>
#include<iostream>
using namespace std;
//6. 快速排序 O(NlogN) 最差O(N^2) 最好O(logN)
void swap(int *arr, int a, int b) {
if (a == b)
return;
arr[a] = arr[a] ^ arr[b];
arr[b] = arr[a] ^ arr[b];
arr[a] = arr[a] ^ arr[b];
}
int* partition(int* arr, int l, int r) {
int less = l - 1;
int more = r;
while (l < more) {
if (arr[l] < arr[r]) {
swap(arr, ++less, l++);
}
else if (arr[l] > arr[r]) {
swap(arr, --more, l);
}
else { l++; }
}
swap(arr, more, r);
int* a = new int[2];
a[0] = less + 1;
a[1] = more;
cout << "less" << less << " " << "more" << more << endl;
return a;
}
void quickSort(int* arr, int l, int r) {
int end = _msize(arr) / sizeof(arr);
//int *p = new int[2];
if (l < r) {
swap(arr, l + (int)(rand() % (r - l + 1)), r);
int *p = partition(arr, l, r);
cout << "p[0]" << p[0] << " " << "p[1]" << p[1] << endl;
quickSort(arr, l, p[0] - 1);
quickSort(arr, p[1], r);
}
}
void quickSort(int* arr) {
int end = _msize(arr) / sizeof(arr);
if (arr == NULL || end < 2) {
return;
}
quickSort(arr, 0, end - 1);
}
int main() {
int arr[] = { 7, 4, 9, 2, 8, 6, 1, 5, 3, 0 };
int len = sizeof(arr) / sizeof(arr[0]);
quickSort(arr);
for (int i = 0; i < len; ++i) {
cout << arr[i] << endl;
}
return 0;
}