나는 어떤 종류의 정렬이 아래의 정렬인지, 그리고 큰 O 표기법에서의 실행 시간은 어떨까 궁금합니다. 내 친구는 알고리즘에 대한 지식없이이 정렬 함수를 작성했으며 이제 우리는 얼마나 빨리/효율적으로 메모리가 효율적인지에 관해 논쟁 중입니다. 그러니 제발요, 분석을 도와주세요. 어떤 종류의 정렬입니까? 실행 시간은 어떻게됩니까?
void sort(int* a, int size)
{
if (size <= 1) return;
else if (size == 2)
{
if (a[0] > a[1])
swap (a[0], a[1]);
return;
}
else
{
int i = size/2;
sort(a, i);
sort(a+i, size - i);
int j = 0, k = i ;
while (k < size && j < k)
{
if (a[j] > a[k])
{
int temp = k;
while (temp > j)
{
swap(a[temp - 1], a[temp]);
temp--;
}
k++;
}
j++;
}
}
}
은 머지 소트 기본적으로 사용자들은
숙제 문제입니까? –
mergesort와 비슷하게 보이고 삽입 정렬이 뒤 따름 –
아니요, 숙제 문제가 아닙니다. 내 친구는 어디서든지 보지 않고 mergesort를 작성하려고 시도했고 이것들을 생각해 낸다. –