我想生成一些测试数据来测试一个函数,该函数将“k个排序”列表(其中每个元素的位置最多与其正确排序位置相差k个位置)合并为单个完全排序的列表。我有一个可行的方法,但我不确定它有多随机化,而且我觉得应该有一种更简单/更优雅的方法来做到这一点。我的当前方法如下:
- 生成n个随机元素,并配对一个整数索引。
- 对随机元素进行排序。
- 将每个元素的配对索引设置为其排序位置。
- 向后遍历元素,将每个元素与列表中距离1到k个位置之间的另一个元素交换。仅在目标元素的配对索引为其当前索引时才与目标元素交换(这避免了交换已经不在正确位置并将其移动超过k个位置的元素)。
- 将扰动的元素复制到另一个列表中。