我需要整理一份清单。零索引中的项目将成为数据透视表,因此列表中较小的每个项目都将在列表中保留给它,而更大的项目将在列表中直接显示。
现在我无法使用"排序"或Python中的任何内置函数。有谁能给我一个线索?
答案 0 :(得分:0)
由于您没有提供尝试的代码,我只是让您了解算法。
浏览列表,跳过数据透视值为的索引0并从索引1开始,并检查列表条目。如果条目小于或等于数据透视值,则“交换列表条目以将该值移动到表格的下端”。如果您正确编码,则不需要这样做,您可以保留该值。如果该值大于数据透视值,则交换列表条目以将检查的值移动到表的上端。检查完所有列表条目后停止。如果您确实需要两个子列表之间的透视值,请进行最后一次交换以将透视值放在适当的位置。
您需要两个变量来跟踪列表中检查的下半部分和列表中检查的上半部分的限制。未经审查的值将在这两个子列表之间。这些变量是列表中的索引 - 当您逐步查看表的值时,您的大部分代码将处理使用和更新这些索引。
现在考虑这两个关键索引变量的确切定义,它们的初始值,它们如何针对每个检查值进行更改,以及何时停止检查列表值的循环。
请注意,我建议的算法不是进行分区的最佳方法。还有另一种更复杂的算法可以减少交换次数。但是你应该学会在走路之前爬行,我的建议确实以相同的执行时间顺序完成工作。