삽입 정렬을 어떻게 수행 할 수 있지만 요소뿐만 아니라 배열에서 요소의 속성을 점검 할 수 있습니까?
-
16-09-2019 - |
문제
죄송합니다. 이것이 간단하다고 확신하지만 피곤해서 알아낼 수 없습니다.
나는 요소의 배열을 가지고 있으며, 각 요소는 실제로 입자가 포함되는 데이터 구조 (c의 구조물) 인 입자입니다. 요소 자체뿐만 아니라 요소 X 위치를 비교하고 싶습니다.
보고 위키 백과의 의사 코드, 나는 내가 원하는 속성을 비교하기 위해 그것을 수정하려고 시도했지만 나는 무언가 (아마도 단순한) 잘못한 것을했다고 생각합니다.
내가 수정 한 내용은 다음과 같습니다.
for (i = 1; i<length; i++) {
value = particles[i].position.x;
j = i - 1;
while (j >= 0 && particles[j].position.x > value) {
particles[j+1] = particles[j];
j = j - 1;
}
particles[j+1] = particles[i];
}
누군가가 내 실수를 지적 할 수 있다면 그것은 좋을 것입니다!
아담
해결책
두 번째 라인은 ITH 요소의 임시 사본을 저장하기 위해 작동합니다. 그러나 두 번째 마지막 라인에서는 덮어 쓰기 값에서 읽고 있습니다. 코드를 다음과 함께 변경하면 작동해야합니다 (주석 변경) :
for (i = 1; i<length; i++) {
value = particles[i]; // store particles[i] rather than it's x coordinate
j = i - 1;
while (j >= 0 && particles[j].position.x > value.position.x) { // changed
particles[j+1] = particles[j];
j = j - 1;
}
particles[j+1] = value; // copy from temporary
}
다른 팁
X 좌표 값이 아닌 입자 물체를 교환해야합니다. 노력하다:
for (i = 1; i<length; i++) {
value = particles[ i ];
/* ... */
제휴하지 않습니다 StackOverflow