我正在为我正在处理的 Huffman 编码项目开发一种快速排序算法(解释为什么所有函数名称都以 huff 开头)。当使用调试器遍历它时,该函数在找到最高项时似乎冻结(当试图从向量右侧找到“不应该”在该侧的项时)。此代码可能(可能存在)其他问题,但我现在专注于这个问题。顺便说一句,大多数时候(一直)我调用 cout,它是出于调试目的。
编辑:从评论中对我的代码进行了很多更正,但没有一个能解决我的问题。出于这个原因,我正在更新代码。
void huff_sort_partition(vector<Node*>* v, int b, int e){
int tempt = b+((rand()%(e-b))+1);
int p_idx = (*v)[tempt]->weight;
cout << tempt << endl;
int l = b+0;
int r = e;
cout << "P:" << p_idx << " L-R:" << l << "-" << r << endl;
while(l < r){
while((*v)[l]->weight < p_idx){
l++;
}
while((*v)[r]->weight > p_idx){
r--;
}
Node* s = (*v)[b+l];
(*v)[b+l] = (*v)[b+r];
(*v)[b+r] = s;
}
huff_sort_partition(v, b, l-1);
huff_sort_partition(v, l+1, e);
}
void Huff::huff_sort(vector<Node*>* v){
srand ( time(NULL) );
cout << "------sort------" << endl;
huff_sort_partition(v, 0, v->size());
}
编辑:我想我会添加这个,因为还没有人回答这个问题。如果代码“应该”工作,然后评论它(这样我可以在这个代码之外寻找它为什么不能工作的原因)。