我尝试使用指针引用数组元素来实现冒泡排序,而不是使用数组索引。
void bubble_p(long *, long);
int main(){
long count = 10;
int i;
long data[]= {5,2,1,7,10,6,8,4,9,0};
bubble_p(data, sizeof(data)/sizeof(long));
for(i=0;i<sizeof(data)/sizeof(data[0]);i++){
printf("%ld\n",data[i]);
}
return 0;
}
void bubble_p(long *data, long count) {
long *last = data + count - 1;
while (data < last) {
long *i = data;
while (i < last) {
long cur = *i;
long next = *(i + 1);
if (next < cur) {
*i = next;
*(i + 1) = cur;
}
i++;
}
last--;
}
}
编辑:现在代码可以完美运行
任何帮助,将不胜感激。
当数组只有 5 个元素时,为什么要传递 10 的计数?
正如声明的那样,它将分配 5 个元素并丢弃其余的初始值设定项数据。
相反,你应该这样做:
long data[]= {5,2,1,7,10,6,8,4,9,0};
bubble_p(data, sizeof(data)/sizeof(long));
让编译器计算出要创建的数组有多大,而不是对大小进行硬编码,让编译器也计算出该大小。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)