计算插入排序中的比较次数

时间:2016-09-19 02:22:13

标签: c++ sorting insertion-sort

如何更改插入排序代码的此实现,以便它还计算排序期间执行的比较次数和数组赋值次数(元素交换的次数)?

#include <iostream>

using namespace std;

void insertionSort(int arr[], int length);
void printArray(int array[], int size);

int main()
{
    int array[] = {6,2,7,9,3,8,3,10};
    insertionSort(array, (sizeof(array)/sizeof(array[0]))-1);
    printArray(array, (sizeof(array) / sizeof(array[0])) - 1);
    return 0;
}

void insertionSort(int arr[], int length)
{
int i, j, tmp;
for (i = 1; i < length; i++) {
    j = i;
    while (j > 0 && arr[j - 1] > arr[j]) {
        tmp = arr[j];
        arr[j] = arr[j - 1];
        arr[j - 1] = tmp;
        j--;
        }
    }
}

void printArray(int array[], int size)
{
    int j;
    for (j = 0; j < size; j++)
    {
        std::cout << array[j] << std::endl;
    }
}

0 个答案:

没有答案