삽입 정렬이 작동하지 않습니다
-
24-12-2019 - |
문제
나는 새로운 것을 처음으로 삽입하는 프로그램을 만들어야한다고 가정합니다.아래는 내 코드입니다 :
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--;
}
. 제휴하지 않습니다 StackOverflow