我正在尝试以自己的方式实现Radix Sort。 我已经成功实现了它,但我怀疑我可能已经改变了Sort by my Method的时间复杂度。 所以假设我有一个带有7个元素的1 d数组,我想要排序。 我做了一个大小为7X10的二维阵列(用作一个桶), 所以这个2d最多有7个非零元素,其余的将为零。 现在在我的实现中有一个步骤,我必须将那些非零元素从2d数组复制到我原来的1d数组 所以我按如下方式编写代码
注意:c是一个初始化为0并且递增的索引变量
for(int i=0;i<10;i++)
{
for(int j=0;j<bkt.length;j++)
{
if(bkt[j][i]!=0)
{
ar[c]=bkt[j][i];
c++;
}
}
}
这些嵌套循环也会改变我的时间复杂度吗? 时间复杂度将取决于if条件被修改的次数?
或让我让问题更容易,假设我有一个nXn的2d数组并说它有10个非零元素并且休息为0并且假设我应用类似的步骤将数组的非零元素复制到1d阵列。 因为这个步骤的时间复杂度是n ^ 2,因为有2个for循环,而i和j的值只增加了1,所以所有元素都需要被扫描?