基数2的基数排序功能不起作用?

我正在写一个程序,它接受一个整数数组并将它们排序为基数16 8 10和2.我的函数适用于除2之外的所有基数。它不能正确地对数字进行排序。我一直在环顾四周,没有地方特别解释这个问题。我认为即时通讯应该使用移位(>> < <),但我不知道如何?基数2的基数排序功能不起作用?

void Sortfunc(int myarray[], int n, int base){ 

queue<int> bins[10];

int MAX=4; // max digits

int COUNTER=0;// position of counter

while (COUNTER < MAX) {

for(int i=0; i<n; i++){// sorts array by digit

int dividor=pow(base,COUNTER);

int temp = myarray[i];

int value = static_cast<int>((temp/dividor)%10); //gets the decimal

bins[value].push(temp);

}

回答:

注意,你仍然硬编码的事实,你在基地十个工作到您实施两个景点:

queue<int> bins[10]; // <--- Here 

int MAX=4;

int COUNTER=0;

while (COUNTER < MAX) {

for(int i=0; i<n; i++){

int dividor=pow(base,COUNTER);

int temp = myarray[i];

int value = static_cast<int>((temp/dividor)%10); // <--- Here

bins[value].push(temp);

}

这意味着,即使你试图改变基,您不一定会使用用户提供的基础进行排序。

此外,我建议不要在这里使用pow来计算能力。浮点计算本质上是不精确的,对于这些您无法承受任何误差范围的情况,您最好在整个计算过程中使用整数值。

以上是 基数2的基数排序功能不起作用? 的全部内容, 来源链接: utcz.com/qa/258584.html

回到顶部