【发布时间】:2015-02-01 04:02:49
【问题描述】:
我正在尝试实现一个整数数组的冒泡排序,以便所有以数字 5 结尾的数字首先出现(升序),然后是所有不以 5 结尾的数字(升序)。
冒泡排序前:[5, 1, 23, 45, 65, 89, -85, -76]
冒泡排序后(结束数字 5(升序)):[-85, 5, 45, 65, -76, 1, 23, 89]
所以我确实知道如何编写标准的冒泡排序,但我无法完全理解附加规则(以数字 5 结尾)。任何帮助表示赞赏。
谢谢
【问题讨论】:
-
为什么排序后45没有移到前面?
-
Raskeshbs - 确实如此,我只是复制错误,抱歉!
-
您有任何额外的要求/限制吗?例如,一切都需要在原始数组中完成吗?如果不是,一个简单但低效的方法是处理数组以使所有值都能被 5 整除并分别排序,然后对剩余的值进行排序,最后将两个结果放在一起。
-
James - 没有额外的要求或限制
-
建议实施一个冒泡排序,该排序认为“数字&0x05== 0xx05”出现在不计算为上述表达式的数字之前。并且那个表达式占主导地位的实际值。这意味着更多的比较,而不仅仅是普通冒泡排序算法中的一个。
标签: c algorithm bubble-sort