我有一个有趣的问题,在过去的2天里我一直在努力,但没有具体的解决方案。 我试图写在C程序,其采用以下输入数组:根据C中的4个索引的元组对数组进行排序
1,1,5,5,
1,1,5,9,
2,2,6,2,
1,2,5,5,
1,3,6,6,
1,4,5,1,
4,1,5,6,
5,2,7,1,
1,1,6,0,
2,2,5,0,
步骤1:组根据这样的(4个元素的元组桶排序的第三列中的上述阵列(即每行)的基础上,第3列的值:
2,2,5,5
1,1,5,9,
1,2,5,5,
1,4,5,1,
4,1,5,6,
2,2,5,0,
2,2,6,2,
1,3,6,6,
1,1,6,0,
5,2,7,1
步骤2:
最终输出阵列::
最后基于这样每个桶中的第四列中的元素进行排序 2,2,5,0,
1,4,5,1,
2,2,5,5,
1,2,5,5,
4,1,5,6,
1,1,5,9,
1,1,6,0,
2,2,6,2,
1,3,6,6,
5,2,7,1
第1列和第2列中的元素在上述排序过程中不起任何作用。
我已经尝试过各种技术,使用快速排序或桶排序,然后进行后续快速排序。没有什么比较合适的。 任何人都可以提出一个在C中使用适当的数据结构的方法。
这与在第3列和第4列组成实体的虚拟键上进行排序有何不同?这似乎不应该需要几天才能考虑,除非我完全错过了某些东西(这不会是第一次)。一个正确编写的'qsort()'比较器和一个包含四个“值”的实体宽度(你从来没有指定它们是'int','unsigned int','short'等等)将会/应该做很短的工作这个。 – WhozCraig