Я пытаюсь решить этот вопрос http://www.mycodeschool.com/work-outs/sorting/7 Вопрос заключается в том, чтобы найти нет сдвигов в сортировке вставки.Определение количества смен, выполняемых при сортировке вставки?
Я написал код, но не мог понять, где я неправильно в логике
#include<iostream>
#include<cstdio>
#include<cmath>
// Include headers as needed
using namespace std;
int main()
{
// Write your code here
int T,count,n,*a;
// int imin;
cin >> T;
int value,hole;
while(T--)
{
cin >> n;
count=0;
a=new int[n];
//reading the input array
for(int i=0;i<n;i++)
{
cin >> a[i];
}
// considering the 0th element to be already sorted and
// remaining list unsorted
for(int i=1;i<n;i++)
{
value=a[i];
hole=i;
// shifting
while(hole>0&&a[hole-1]>value)
{
//
a[hole]=a[hole-1];
hole=hole-1;
count++;
}
a[hole]=value;
}
// cout << count<<endl;
}
// Return 0 to indicate normal termination
return 0;
}
Так что ваш вопрос? Вы говорите, что ошибаетесь в логике *. Разве это не работает? Является ли количество смен неправильным? Откуда вы знаете? –
Вы имели в виду сброс count на '0' на каждой итерации цикла while? – AndyG
'a = new int [n];' у вас есть утечка памяти – AndyG