C++ 插入排序C实现
我将插入排序实现为:C++ 插入排序C实现,c++,c,C++,C,我将插入排序实现为: void insertion_sort(int * list, int len ) { int i, j; for(j=1; j<len; j++) { int key = list[j]; i = j - 1; while(i >= 0 && list[i] > key) { list[i + 1] = list[i]; i = i - 1; } list[i + 1] = key;
void insertion_sort(int * list, int len ) {
int i, j;
for(j=1; j<len; j++) {
int key = list[j];
i = j - 1;
while(i >= 0 && list[i] > key) {
list[i + 1] = list[i];
i = i - 1;
}
list[i + 1] = key;
}
}
它很好用。但当我宣布名单为:
int * list = {5, 6, 4, 3, 1, 2};
它失败了。我知道我在如何使用指针方面存在一些问题,但你能详细说明一下吗?谢谢 首先,sizeoflist/sizeoflist[0]不再计算数组的大小。没有问题,sizeof提供了以字节为单位的参数大小-第一个是数组,因此它提供了元素数乘以元素大小,第二个是指针,所以它给出了指针的大小…这段代码不应该编译:或者,对于int*list=,它甚至不应该编译。所以int*实际上并没有指向任何地方。@OliCharlesworth他们不必是陌生人,但您确实希望那些没有太多参与开发的人进行代码审查。这可能是提高质量最有效的一步。@JamesKanze:好吧,现在删除评论,因为我意识到这不会用调试器来解决!关键是让陌生人帮你做调试工作是懒惰的,但它不适用于这里…@AntonKovalenko它当然不应该在C++03中编译。C++11添加到初始化语法中,这可能是合法的。我还不熟悉C++11的所有细节。但是,如果是这样,修改数组将是未定义的行为。
int * list = {5, 6, 4, 3, 1, 2};