【发布时间】:2013-10-30 23:23:04
【问题描述】:
我的任务是通过传递指针来编写一些排序函数。不幸的是,指针只是我的大脑似乎无法理解的那些概念之一。
来电:
int size = 10000;
int* data = new int[size];
//omitted code that populates array for the sake of space
selectionSort(data, data+size);
这是我对该函数的错误尝试:
void selectionSort(int* first, int* last) {
for (int* i = first; i < last-1; i++) {
int* min = i;
for (int* j = i+1; j < last; j++) {
if (j < min) {
min = j;
}
int* temp = i;
i = min;
min = temp;
}
}
}
基本上,当我将一个指针与另一个指针进行比较或调整指针时,我无法弄清楚会发生什么。它是在调整/比较它所指向的值还是在比较实际的指针本身?
感谢任何帮助。干杯。
【问题讨论】:
-
您正在比较指针所持有的地址。如果你想要它指向的值,你需要推迟它,例如。
*min = *j。您还想要i < last,因为last是通过最后一个元素的一个位置——通常的约定后跟stl。