내 프로그램을 실행할 때 잘못된 출력을 얻었습니다. 원인을 알 수있는 단서가 없습니다.삽입 정렬에서 잘못된 출력
아래에서 확인할 수 있듯이 배열이 있습니다. 그러나 프로그램을 실행할 때 출력을 얻습니다 :
array[0]=3
array[1]=1
array[2]=1
array[3]=5
array[4]=5
array[5]=8
명백히 {1,3,4,5,7,8}이 될 것으로 예상되는 출력이 아닙니다. 내가 도대체 뭘 잘못하고있는 겁니까?
#include <stdio.h>
#include <stdlib.h>
#define l 6
void isnertionSort(int array[]);
int main(void)
{
int array[l]={3,4,1,7,5,8};
for(int i=0; i<l;i++) {
printf("array[%d]=%d\n", i, array[i]);
}
printf("\n");
isnertionSort(array);
for(int i=0; i<l; i++){
printf("array[%d]=%d\n", i, array[i]);
}
return 0;
}
void isnertionSort(int array[])
{
int j,key;
for(int i =1;i<l;i++){
key = array[i];
j = i -1;
while(j>0 && array[j]>key){
array[j+1]=array[i];
j--;//j=j-1
}
array[j+1]= key;
}
}
예를 들어 [어떻게 작은 디버깅하는 방법 (프로그램을 디버깅하는 방법을 학습하십시오이다 프로그램] (http://ericlippert.com/2014/03/05/how-to-debug-small-programs/)). 디버거를 사용하여 단계별로 수행하는 방법 및/또는 잘못된 것을 식별하는 인쇄 문을 추가하는 방법을 배워야합니다. 따라서, 몇 가지 샘플 입력 데이터와 예상 및 실제 출력 (MCVE - MCVE 생성 방법에 대한 정보)을 제공해야합니다. –
이동할 때 배열의 요소를 덮어 쓰는 것처럼 보입니다. 디버거는 이런 종류의 문제를 확인하는 훌륭한 도구입니다. –
질문이 해결되면 대답을 수락하고 질문을 조입니다. 비슷한 [조언]을 이미 받았습니다 (https://stackoverflow.com/questions/46758008/c-compiler-error-which-i-am-unable-to-locate#comment80461712_46758008). 응답이 "받아 들여질 때"는 무엇을 의미합니까?를보십시오.] (https://stackoverflow.com/help/accepted-answer) – BLUEPIXY