문제

나는 새로운 것을 처음으로 삽입하는 프로그램을 만들어야한다고 가정합니다.아래는 내 코드입니다 :

int InsertionSort(int array[], int len)
{
    unsigned int i;
    unsigned int j;
    unsigned int k;
    int temp;

    for (i = 1; i < len; i++)
    {
        j = i;
        while (j > 0 && array[i] < array[j-1])
        {
            temp = array[j-1];
            array[j-1] = array[i];
            array[i] = temp;
            j--;
        }

    }

    for (k = 0; k < len; k++)
        printf("The list at: %d\n", array[k]);
    return *array;
}



int main()
{
    int array[10] = {82, 50, 12, 68, 17, 95, 35, 23};
    int len = 8;
    //SelectionSort(array, len);
    InsertionSort(array, len);


}
.

정렬 된 목록은 다음과 같이 표시됩니다.

[12, 17, 23, 35, 50, 68, 82, 95]
.

그러나 대신, 내 목록이 인쇄 할 때 다음과 같이 보입니다.

[50, 12, 68, 17, 82, 35, 23, 95]
.

연필로 종이로 프로그램과 함께 가고 괜찮은 것처럼 보였으 나, 일하고 있지 않은 것 같아요. 그래서 나는 누군가가 내 코드에서 잘못되었던 곳을 지적하는 데 도움이 될 수 있는지 궁금해하고 있었습니까?미리 감사드립니다!

도움이 되었습니까?

해결책

코드의 코드 변경

while (j > 0 && array[i] < array[j-1])
{
    temp = array[j-1];
    array[j-1] = array[i];
    array[i] = temp;
    j--;
}
.

~

while (j > 0 && array[j - 1] > array[j])
{
    temp = array[j];
    array[j] = array[j - 1];
    array[j - 1] = temp;
    j--;
}
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top