首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >冒泡排序,以便所有以数字5结尾的数字都按升序排列

冒泡排序,以便所有以数字5结尾的数字都按升序排列
EN

Stack Overflow用户
提问于 2015-02-01 12:02:49
回答 2查看 164关注 0票数 0

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

BubbleSort前: 5,1,23,45,65,89,-85,-76

在Bubblesort之后(结束数字5(升序)):-85,5,45,65,-76,1,23,89

所以我确实知道如何编写标准的Bubblesort,但我不能理解额外的规则(以数字5结尾)。任何帮助都是非常感谢的。

谢谢

EN

回答 2

Stack Overflow用户

发布于 2015-02-01 12:57:13

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

假设冒泡排序代码正在工作,并使用一个简单的比较,如:

代码语言:javascript
复制
if (a < b) ...

如下所示创建函数。a%10将导致值为-9,-8,...,8,9。当此结果为5-5时进行测试。下面的测试是在|a%10| == 5

代码语言:javascript
复制
// 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;`
}

并调用

代码语言:javascript
复制
 if (cmp5(a,b)) ...
票数 4
EN

Stack Overflow用户

发布于 2015-02-01 12:12:46

正如您所说的,您知道标准冒泡排序,现在可以执行以下操作

  1. 使用两个数组/向量(您喜欢的那个)
  2. 一个用于5的倍数,另一个用于剩余的向量现在只需将标准冒泡排序函数bubblesort(array[])
  3. Filter过滤后输入到两个数组
  4. 调用冒泡排序,您就完成了

<>H111>并将两个结果放在一起

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28259326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档