图元指针数组移动产生的问题
Solved
Chinese
-
#define WAIT_A_MINUTE_2 \ while (isPause) \ { \ if (isReset) \ return; \ QTest::qWait(10); \ } \ QTest::qWait(speed); int number[15]; RectItem *rect[15]; void startSort() { isPause = false; isReset = false; RectItem *item; int temp; int j; WAIT_A_MINUTE_2 rect[0]->setItemColor(RectItem::CYAN); for (int i = 1; i < n; i++) { WAIT_A_MINUTE_2 rect[i]->setItemColor(RectItem::RED); rect[i]->setPos(QPoint(0, dropDistance)); item = rect[i]; temp = number[i]; j = i - 1; while (j >= 0 && number[j] > temp) { WAIT_A_MINUTE_2 item->setPos(QPoint(-75, 0)); rect[j]->setPos(QPoint(75, 0)); number[j + 1] = number[j]; rect[j + 1] = rect[j]; j--; } WAIT_A_MINUTE_2 item->setPos(QPoint(0, -dropDistance)); item->setItemColor(RectItem::CYAN); number[j + 1] = temp; rect[j + 1] = item; } emit finished(); }
这段代码想实现的效果是:https://visualgo.net/en/sorting 其中的insert_sort。
根据这段代码我实现的却是这样:
我检查好久了,就是找不出哪里错了,插排的代码逻辑没错啊,看着错误好像是指针数组错了,但是我检查不出哪里有问题。
-
最好使用C++风格,数组这个东西除非必要尽量不用的