필자의 삽입 정렬 구현은 첫 번째 요소를 정렬하는 것을 제외하고는 작동하는 것처럼 보입니다. 여기에 작은 테스트 케이스가 있습니다. 아무도 내 알고리즘에 문제가 있다고 말할 수 있습니까?삽입 정렬 첫 번째 요소를 정렬하지 않습니까?
#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;
void Insert(int *S, int k)
{
int key = S[k];
int j = k-1;
while(j>0 && S[j] > key)
{
S[j+1] = S[j];
j--;
}
S[j+1] = key;
}
void Insertionsort(int S[], int n)
{
if(n>1)
Insertionsort(S,n-1);
Insert(S,n);
}
int main()
{
srand (time(NULL));
int S1_8[8];
for(int i=0; i<8; i++)
S1_8[i] = rand()%100;
Insertionsort(S1_8,8);
for(int i=0; i<8; i++)
{
cout << S1_8[i] << endl;
}
return 0;
}
그것은 문제를 설명하지 않습니다 수 있어야합니다 확인하지만, 문제는 확실히있다 마지막 반복에서'Insert (S, 8)'가 호출 될 때. 존재하지 않는 요소 인'S [8] '에 접근 할'Insert' 함수의 정의에 따라. – jogojapan