操作计数插入气泡选择



我似乎无法弄清楚我的代码问题是什么,我为我的插入排序代码获得了荒谬的操作。希望提供一些帮助。

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;
}

最新更新