【发布时间】:2012-08-14 20:48:14
【问题描述】:
我昨天写了下面的插入排序(我3天前开始学习C)。由于某种原因,排序不会修改数组AT ALL。
#include <stdio.h>
int *insert(int arr[], int index, int item);
int *isort(int arr[]);
int main() {
int a[17] = {1, 2, 9, 5, 3, 2, 1, 6, 5, 9, 0, 1, 3, 4, 2, 3, 4};
int *b = isort(a);
for (int i = 0; i < 17; i += 1) {
printf("%d ", b[i]);
}
return 0;
}
int *insert(int arr[], int index, int item) {
--index;
while (index >= 0 && item < arr[index]) {
arr[index + 1] = arr[index];
--index;
}
arr[index + 1] = item;
return arr;
}
int *isort(int arr[]) {
for (int i = 1; i < sizeof(arr) - 1; i++) {
arr = insert(arr, i, arr[i]);
}
return arr;
}
我认为它可能是我的编译器,因为我正在运行一个非 unix 机器上的编译器:lcc-win,但我不确定。我在这里缺少一些基本的东西吗?
【问题讨论】:
-
@Blastfurnace 因为在 C 中,没有索引的数组引用是指针。
-
@PeterGluck:我知道,对不起,我应该更清楚地说明我的评论是一个链接。这个关于传递数组的问题已经被问过很多次了,所以我找到了一个类似的相关问题和答案。
-
@Blastfurnace 对,抱歉我错过了链接突出显示!
标签: c windows algorithm sorting lcc-win32