插入排序C实现

时间:2013-01-05 11:11:36

标签: 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;
  }
}

当我这样调用这个函数时:

int list[] = {5, 6, 4, 3, 1, 2};
insertion_sort(list, sizeof(list)/sizeof(list[0]));

它工作正常。但是当我将列表声明为:

int * list = {5, 6, 4, 3, 1, 2};

失败了。我知道我如何玩指针有一些问题,但你能详细说明吗?谢谢!

2 个答案:

答案 0 :(得分:4)

没有问题,sizeof以字节为单位给出参数的大小 - 第一个是数组,因此它给出了元素的数量乘以元素的大小,第二个是指针,所以它给你指针的大小......

答案 1 :(得分:3)

首先,sizeof(list)/sizeof(list[0])不再评估数组的大小。