Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 插入排序C实现_C++_C - Fatal编程技术网

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};