【发布时间】:2020-09-12 08:59:29
【问题描述】:
如果我有一个从0 到n-1 的整数的排列,并且我想按升序对排列进行排序,那么无论是什么基于交换的排序方法都是真的吗使用时,在所有基于交换的排序方法中,排序所需的交换次数的奇偶校验是否相同?
例如,考虑我在下面提供的基于交换的排序方法,用 C++ 编写:
(注意:pos[i] 存储列表中元素“i”的当前索引(从 0 开始)
int cnt = 0; // stores the number of operations
for (int i = 0; i < n; i++) {
if (pos[i] != i) {
cnt++;
int temp = a[i];
int temp_pos = pos[i];
swap(a[i], a[pos[i]]);
pos[i] = i;
pos[temp] = temp_pos;
}
}
与其他基于交换的排序方法相比,当在相同的排列上执行时,基于交换的排序算法(如上述算法)是否具有相同的排序所需交换数的奇偶校验?从0 到n-1 的整数?
【问题讨论】:
标签: c++ sorting c++11 permutation swap