zoukankan      html  css  js  c++  java
  • 快排和插入排序的效率粗略测试

    #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;
    } 
    终于明白,“喜欢”是一种莫大的能量!
  • 相关阅读:
    计算机英语
    NSQ学习记录
    Java学习记录-注解
    VS插件开发

    双链表
    顺序表
    顺序队列
    顺序栈

  • 原文地址:https://www.cnblogs.com/tml839720759/p/3386958.html
Copyright © 2011-2022 走看看