我似乎无法弄清楚我的代码问题是什么,我为我的插入排序代码获得了荒谬的操作。希望提供一些帮助。
int insertionSort(int arr[], int n, int &operations)
{
clock_t start = clock();
int i, key, j;
for (i = 1; i < n; i++)
{
key = arr[i];
j = i - 1;
while (j >= 0 && arr[j] > key)
{
arr[j + 1] = arr[j];
j = j - 1;
operations++;
}
arr[j + 1] = key;
}
clock_t end = clock();
return end - start;
}
参考这篇文章:如何计算插入排序中的比较和掉期?(Java(
您可以将操作数量计算为:
long int operations=0;
int insertionSort(int arr[], int n, int &operations)
{
clock_t start = clock();
int i, key, j;
for (i = 1; i < n; i++)
{
key = arr[i];
j = i - 1;
while (1)
{
operations++;
if((j>=0) && (arr[j]>key)){
arr[j + 1] = arr[j];
j = j - 1;
}
else break;
}
arr[j + 1] = key;
}
clock_t end = clock();
return end - start;
}