我的中位数3实施在这里工作不正常。我必须随机选择3个数字这里是我的代码请帮助我。位数3快速排序执行
#include"stdafx.h"
#include <iostream>
#include<algorithm>
using namespace std;
#define size 10
int i;
void show(int* array, int n);
int partition(int* array, int pValue, int left, int right);
void QuickSort(int* array, int left, int right);
int main(void)
{
int array[size];
int i;
for(i = 0; i < size; i++)
{
array[i]=rand()%100;
}
cout<<endl<<"The random generated numbers are: "<<endl;
show(array, size);
QuickSort(array,0,size - 1);
cout<<endl<<"The sorted numbers are : "<<endl;
show(array, size);
system("pause");
return 0;
}
void show(int* array, int n)
{
int i;
for(i = 0; i < n; i++) cout<<array[i]<<'\t';
}
void QuickSort(int* array, int left, int right)
{
for(i=0;i<3;i++)
{
array[i]=array[rand()%100];
}
stable_sort(array,array+3);
int p=array[(i+1)/2];
//int p = array[left];
int split;
if(right > left)
{
split = partition(array, p, left, right);
array[split] = p;
QuickSort(array, left, split-1);
QuickSort(array, split+1, right);
}
}
int partition(int* array, int p, int left, int right)
{
int lb = left;
int rb = right;
while(lb < rb)
{
while(p < array[rb]&& rb > lb)
{
rb--;
}
swap(array[lb], array[rb]);
while(p >= array[lb]&& lb < rb)
{
lb++;
}
swap(array[rb], array[lb]);
}
return lb;
}
告诉我们为什么它不工作会帮助我们帮助你。它编译失败吗?它运行但显示错误?它运行但产生错误的结果?它会永远持续下去吗? – 2011-04-14 16:55:39
@马丁霍费尔南德斯当我有枢轴的最左侧的元素,它工作正常,但是当我想通过以前3个元素的中位数作为支点来更改枢轴的值时,它会产生一些垃圾值。 – james 2011-04-14 17:02:47
这是您第五次问这个问题,您的代码仍然完全破坏。也许你应该把这个任务放在一边,从简单的事情开始。 – Blastfurnace 2011-04-14 17:14:57