基数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