gpt4 book ai didi

c++ - 对二进制数数组进行排序的时间复杂度

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:10:22 26 4
gpt4 key购买 nike

<分区>

给定以下数组:| 0 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 |

我们必须对上面的数组进行排序,例如右侧全为 1,左侧全为 0。

我在 C++ 中提出了 2 种算法。

第一个:

for(i = 0; i < n; i++) {
if(a[i] == 1 && i != n - 1) {
for(j = i + 1; j < n; j++) {
if(a[j] == 0) {
temp = a[j];
a[i] = a[j];
a[j] = temp;
break;
}
}
}
}

第二个:

int x = 0;
for(i = 0; i < n; i++) {
if(a[i] == 1) {
for(j = n-x-1; j >= 0; j--) {
if(a[j] == 0) {
temp = a[j];
a[i] = a[j];
a[j] = temp;
x++;
break;
}
}
if(x > n / 2)
break;
}

你能告诉我两者的时间复杂度吗?哪个表现更好还建议我一个更好的算法和解释。谢谢。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com