gpt4 book ai didi

c - 冒泡排序,使所有以数字 5 结尾的数字按升序排列

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:37:56 25 4
gpt4 key购买 nike

我正在尝试实现一个整数数组的冒泡排序,以便所有以数字 5 结尾的数字排在第一位(升序),然后是所有不以 5 结尾的数字(升序)。

冒泡排序之前:[5, 1, 23, 45, 65, 89, -85, -76]

冒泡排序后(结束数字 5(升序)):[-85, 5, 45, 65, -76, 1, 23, 89]

所以我确实知道如何编写标准的冒泡排序,但我无法理解附加规则(以数字 5 结尾)。感谢您的帮助。

谢谢

最佳答案

唯一需要更改的是比较代码。

假设冒泡排序代码正常运行并使用如下简单的比较:

if (a < b) ...

创建函数如下。 a%10 将产生值 -9,-8,...,8,9。测试此结果何时为 5-5。以下测试 |a%10| 时== 5

// Return 1 when a should come before b in the array.
int cmp5(int a, int b) {
int a5 = abs(a%10) == 5;
int b5 = abs(b%10) == 5;
// Since a and b are the same "five-ness", do a simple compare
if (a5 == b5) return a < b;
if (a5) return 1;
return 0;
// Could replace above 2 lines with `return a5;`
}

并调用

 if (cmp5(a,b)) ...

关于c - 冒泡排序,使所有以数字 5 结尾的数字按升序排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28259326/

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