【发布时间】:2021-02-08 22:54:35
【问题描述】:
所以我有一个数组,其中包含偶数和奇数。 我必须先用奇数排序,然后再用偶数排序。 这是我的处理方法:
int key,val;
int odd = 0;
int index = 0;
for(int i=0;i<max;i++)
{
if(arr[i]%2!=0)
{
int temp = arr[index];
arr[index] = arr[i];
arr[i] = temp;
index++;
odd++;
}
}
首先我将偶数和奇数分开,然后对其应用排序。 对于排序,我有这个代码:
for (int i=1; i<max;i++)
{
key=arr[i];
if(i<odd)
{
val = 0;
}
if(i>=odd)
{
val = odd;
}
for(int j=i; j>val && key < arr[j-1]; j--)
{
arr[j] = arr[j-1];
arr[j-1] = key;
}
}
我面临的问题是我找不到上述排序代码的复杂性。 像插入排序一样应用于第一个奇数。 完成后,我跳过那部分并开始对偶数进行排序。 如果我对数组进行了排序,这是我的排序方法,例如:3 5 7 9 2 6 10 12 complexity table
这一切如何运作? 在第一个 for 循环中,我遍历循环并将所有奇数放在偶数之前。 但是因为它没有对它们进行排序。 在下一个具有插入排序的 for 循环中。我基本上所做的只是使用 if 语句在数组中首先对奇数进行排序。然后当 i == odd 嵌套的 for 循环时,它不会遍历所有奇数,而是只计算偶数,然后对它们进行排序。
【问题讨论】:
-
什么是
index?请阅读minimal reproducible example。 -
你能解释一下你的排序算法吗?
-
@JohnFilleau 立即查看
-
@Stef 如果你能看懂,现在可以在底部查看
标签: c++ sorting time-complexity insertion-sort code-complexity