快排和插入排序的效率粗略测试

#include <iostream>
#include <ctime>
#include <cstdlib>

#define random(x) rand()%x 
#define MAX_LENGTH 10000
void printArr(int *arr, int len)
{
    for(int i = 0; i < len; i++)
    {
        std::cout<< arr[i];
    }
    std::cout<<std::endl;
}

//插入排序 
void InsertionSort(int *array, int number_of_elements)
{
    int iter, jter;
    for(iter = 1; iter < number_of_elements; iter++)
   {  
          int current_element = array[iter];
       jter = iter - 1;
       while(jter >= 0 && array[jter] > current_element)    
       {
             array[jter+1] = array[jter];
             jter--;
       }
         array[jter+1] = current_element;
   }
 
}

//快速排序 
void QuickSort(int *arr, int from, int to)
{
    if(from >= to)
    {
        return;
    }
    int pivot = arr[from];
    int i = from, j, temp;
    for(j = from + 1; j <= to; j++)
    {
        if(arr[j] < pivot)
        {
            i = i + 1;
            temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
    }
    temp = arr[i];
    arr[i] = arr[from];
    arr[from] = temp;
    QuickSort(arr, from, i - 1);
    QuickSort(arr, i + 1, to);
}

int main(void)
{
    double start, finish, duration;
    int arr[MAX_LENGTH];
    srand(time(NULL));
    for(int i = 0; i < MAX_LENGTH; i++)
    {
        arr[i] = random(10);
    }
    
    start = clock();
    //QuickSort(arr, 0, MAX_LENGTH - 1); //用时0.024秒
    InsertionSort(arr, MAX_LENGTH); // 用时0.116秒
    finish = clock();
    duration = (double)(finish - start) / CLOCKS_PER_SEC;
    std::cout<< duration << std::endl;
    //printArr(arr, MAX_LENGTH);

    return 0;
} 
终于明白,“喜欢”是一种莫大的能量!
原文地址:https://www.cnblogs.com/tml839720759/p/3386958.html