使用Stack或Queue在c ++中实现插入排序?

时间:2016-10-26 15:34:33

标签: c++ sorting insertion-sort

带数组的经典插入排序算法

void insertion_sort (int arr[], int length){
        int j, temp;

    for (int i = 0; i < length; i++){
        j = i;

        while (j > 0 && arr[j] < arr[j-1]){
              temp = arr[j];
              arr[j] = arr[j-1];
              arr[j-1] = temp;
              j--;
              }
        }
}

那么它应该通过使用堆栈还是队列来实现?

1 个答案:

答案 0 :(得分:0)

如果使用向量,则会获得所有正在使用的内存都是连续的性能,但由于必须复制而失去性能。 如果你使用任何类型的链表,你就会获得,因为你不需要复制,但是你输了,因为你的记忆遍布整个地方。

因此,这将取决于正在排序的项目数,处理器缓存,以及可能还有许多其他东西。

鉴于已知这种排序算法对于任何数量的N都很慢,正确的解决方案是根本不用担心性能而只使用std :: sort。