对具有可具有3个值的对象的数组进行排序

时间:2012-12-01 13:35:15

标签: arrays algorithm sorting language-agnostic

我们有一个包含对象的数组,每个对象都有一个可以有3个值的属性。

现在我们需要使用线性O(n)算法和常量内存使用来对此数组进行排序。

我们怎么办呢?

类似于荷兰国旗算法吗?或者我们可以计算排序吗?如果我不对,那么我们还有什么方法可以继续?这个问题实际上是在接受采访时向我的一位朋友询问。

1 个答案:

答案 0 :(得分:1)

这是数组元素问题的重新排列。荷兰国旗算法应该在这里做

void partition(int data[], int size, int low, int high) {
  int p = -1;
  int q = size;
  for (int i = 0; i < q;) {
    if (data[i] < low) {
      swap(data[i], data[++p]);
      ++i;
    } else if (data[i] >= high) {
      swap(data[i], data[--q]);
    } else {
      ++i;
    }
  }
}