C++ 如何对两个并行阵列进行排序?
我有一个数字数组(C++ 如何对两个并行阵列进行排序?,c++,sorting,C++,Sorting,我有一个数字数组(int numoftoys[])和一个并行字符串数组(string names[]),其条目对应于数字。我的作业要求我对数字数组进行排序,这样当我打印时,它会先打印最高的数字,然后再打印下一个最高的数字,依此类推。如何做到这一点并使保存名称的数组与数字数组保持同步?您需要执行气泡排序(),当您交换正在排序的数组时,交换与之并行的数组 您需要执行冒泡排序(),当您交换正在排序的数组时,交换与之并行的数组 因为这是家庭作业,所以我不会发布任何代码,但这里有一个想法: 将数据放入一个
int numoftoys[]
)和一个并行字符串数组(string names[]
),其条目对应于数字。我的作业要求我对数字数组进行排序,这样当我打印时,它会先打印最高的数字,然后再打印下一个最高的数字,依此类推。如何做到这一点并使保存名称的数组与数字数组保持同步?您需要执行气泡排序(),当您交换正在排序的数组时,交换与之并行的数组 您需要执行冒泡排序(),当您交换正在排序的数组时,交换与之并行的数组 因为这是家庭作业,所以我不会发布任何代码,但这里有一个想法:
将数据放入一个
std::map
,并对其进行迭代。在地图上的迭代是按键的顺序进行的 因为这是家庭作业,所以我不会发布任何代码,但这里有一个想法:
将数据放入一个
std::map
,并对其进行迭代。在地图上的迭代是按键的顺序进行的 你有没有在这方面做过任何工作?嗯,公平地说,既然Sam一开始就不知道如何开始,那么期望他提供任何代码供我们审查是愚蠢的。轻轻地朝正确的方向推一下就可以了。@sbi:他的导师就是为了这个。不是我们。@sbi:如果你和我一样,觉得所有带有家庭作业标签的问题都应该立即取消,这是一个有效的反对意见。:)而且,不,无论如何,要求改正或提出一个具体问题与仅仅把家庭作业问题扔到网上完全不同。@sbi:是的,我读过。仅仅因为你发布了一个URL,并不意味着我会突然神奇地同意。你有没有尝试过在这方面做任何工作?好吧,公平地说,既然Sam一开始就不知道如何开始,期待他提供任何代码供我们审阅是愚蠢的。轻轻地朝正确的方向推一下就可以了。@sbi:他的导师就是为了这个。不是我们。@sbi:如果你和我一样,觉得所有带有家庭作业标签的问题都应该立即取消,这是一个有效的反对意见。:)而且,不,无论如何,要求改正或提出一个具体问题与仅仅把家庭作业问题扔到网上完全不同。@sbi:是的,我读过。仅仅因为你发布了一个URL,并不意味着我会突然神奇地同意。好吧,我添加了一段代码,上面说如果你交换了什么,也交换了那里的东西?是的,当你交换数字时,也交换名称数组中的元素-那些索引与你在数字数组中交换的索引相同的元素,@Crashmstr。这是一个完全合法的算法,很容易实现,最重要的是,对于这种情况,初学者很容易理解和手工操作。这可能是课堂上教的算法。@RobKennedy,我知道,我知道。这也是解决这个问题的可行办法。P.S.mergesort是我最喜欢的性能和可理解性。@crashmstr:我最喜欢的可理解性和性能是std::sort()
。每个人都知道,它保证没有bug,而且我还没有遇到性能不够的情况。好吧,我添加了一段代码,上面说如果你交换了一些东西,也在那里交换它?是的,当你交换数字时,交换名称数组中的元素-那些索引与您在数字数组@Crashmstr中交换的索引相同的元素。这是一个完全合法的算法,很容易实现,最重要的是,对于这种情况,初学者很容易理解和手工操作。这可能是课堂上教的算法。@RobKennedy,我知道,我知道。这也是解决这个问题的可行办法。P.S.mergesort是我最喜欢的性能和可理解性。@crashmstr:我最喜欢的可理解性和性能是std::sort()
。每个人都知道,它保证没有bug,而且我还没有遇到性能不足的情况。排序键必须是所生产的玩具的#,这不一定是唯一的,因此std::map
已过时。但是,std::set
将非常有效。@Rob:我可以理解“数字”是产品的计数,但我可以假设它们是任意的其他数字,这个问题也适用于此。但是,如果您所说的是真的,那么使用std::multi_map
应该比使用一组对容易。排序键必须是生产的玩具的#,这不一定是唯一的,因此std::map
不适用。但是,std::set
将非常有效。@Rob:我可以理解“数字”是产品的计数,但我可以假设它们是任意的其他数字,这个问题也适用于此。但是,如果您所说的是真的,那么使用std::multi_map
可能比使用一组对更容易。