带数组的经典插入排序算法
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--;
}
}
}
那么它应该通过使用堆栈还是队列来实现?
答案 0 :(得分:0)
如果使用向量,则会获得所有正在使用的内存都是连续的性能,但由于必须复制而失去性能。 如果你使用任何类型的链表,你就会获得,因为你不需要复制,但是你输了,因为你的记忆遍布整个地方。
因此,这将取决于正在排序的项目数,处理器缓存,以及可能还有许多其他东西。
鉴于已知这种排序算法对于任何数量的N都很慢,正确的解决方案是根本不用担心性能而只使用std :: sort。