【发布时间】:2015-04-14 11:41:40
【问题描述】:
美好的一天!我们被要求对一个布尔数组进行排序,但问题是当我运行我的程序时,它总是停止工作。我尝试打印布尔数组中的值并打印它们,但是当我尝试注入快速排序功能时,未排序的值不再打印,数组也没有排序。此代码对除布尔值之外的不同数据类型进行了排序。我希望你能帮我找到问题。谢谢。
void swap(bool &a, bool &b)
{
int temp;
temp = a;
a = b;
b = temp;
}
void sortArray(bool* arr, int start, int end)
{
int pivot = arr[start];
int p;
if(end > start)
{
p = partition(arr, pivot, start, end);
arr[p] = pivot;
sortArray(arr, start, p);
sortArray(arr, p+1, end);
}
}
int partition(bool* arr, int pivot, int start, int end)
{
int header = start;
int p = end;
while(header < p)
{
while( pivot < arr[p] && p > header)
{
p=p-1;
}
swap(arr[header], arr[p]);
while( pivot >= arr[header] && header < p)
{
header++;
}
swap(arr[p], arr[header]);
}
return header;
}
【问题讨论】:
-
已经有交换功能,
std::swap -
我可以这样做,但我们被特别要求使用快速排序功能/算法对不同的数据类型进行排序。
-
@NeilKirk:不是也已经有了排序功能吗? :)
-
@500-InternalServerError 是的,但我认为这是编写它的任务;)
标签: c++ arrays sorting boolean quicksort