我正在尝试实现一个整数数组的冒泡排序,这样所有以数字5结尾的数字首先出现(升序),然后是所有不以5结尾的数字(升序)。
BubbleSort前: 5,1,23,45,65,89,-85,-76
在Bubblesort之后(结束数字5(升序)):-85,5,45,65,-76,1,23,89
所以我确实知道如何编写标准的Bubblesort,但我不能理解额外的规则(以数字5结尾)。任何帮助都是非常感谢的。
谢谢
发布于 2015-02-01 12:57:13
唯一需要更改的是比较代码。
假设冒泡排序代码正在工作,并使用一个简单的比较,如:
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)) ...发布于 2015-02-01 12:12:46
正如您所说的,您知道标准冒泡排序,现在可以执行以下操作
<>H111>并将两个结果放在一起
https://stackoverflow.com/questions/28259326
复制相似问题