Я пишу этот код раздела, и, похоже, у меня есть некоторые проблемы с моей RandomInRange функцией
Кто-нибудь знает, как написать эту функцию подкачки? Итак, я исправил первые несколько ошибок, последняя проблема (я думаю) с моей Swap () функцией.
#include <iostream>
#include <cstdio>
#include <stdlib.h>
#include <exception>
using namespace std;
int RandomInRange(int start,int end)
{
return (rand()%(end-start+1)+start);
}
void Swap(int* a,int* b)
{
int* temp=a;
a=b;
b=temp;
return;
}
int Partition(int data[],int length,int start,int end)
{
if(data==NULL || length<=0 || start<0 || end>=length)
{//throw new exception("Invalid Parameters.");
}
int index=RandomInRange(start,end);
Swap(&data[index],&data[end]);
int small = start-1;
for(index = start; index < end; ++index)
{
if(data[index]<data[end])
{
++small;
if(small!=index)
Swap(&data[index],&data[small]);
}
}
++small;
if(small != index)
Swap(&data[index],&data[small]);
return small;
}
int main(void)
{
int a[]={9,0,-4,23,5,21,3,-1};
Partition(a,8,1,8);
for(int i=0;i<8;i++)
cout<<a[i];
return 0;
}
//results={9,0,-4,23,5,21,3,-1}, so it's not actually sorted..
И, мм, просто крошечный вопрос. Кто-нибудь читал исходный код STL? Помогает ли это изучить C ++ и структуру данных? Я надеялся получить более высокие оценки для своих финалов.
Также там говорится:
No matching constructor for initialization of 'std::exception'
, когда я пытаюсь набрать код:
throw new exception("Invalid Parameters.");
Вот почему я заметил, что линия.