几种常用排序算法运行效率比较

今天突发奇想,想玩玩一些基本的算法,看看他们的运行效率如何,废话少说,看看试验的结果:

1.数量级: 1024 * 1

冒泡排序用的时间是:0.0127910111480649 秒
选择排序用的时间是:0.00482072442167929 秒
插入排序用的时间是:0.0295230259711779 秒
希尔排序用的时间是:0.00567558167308974 秒
快速排序用的时间是:0.00129737159331703 秒

2.数量级:1024 * 50

冒泡排序用的时间是:19.2047039498037 秒
选择排序用的时间是:12.8408982147172 秒
插入排序用的时间是:8.41939883420938 秒
希尔排序用的时间是:9.90005713016599 秒
快速排序用的时间是:0.0246495015427938 秒

2.数量级:1024 * 100

冒泡排序用的时间是:82.4504259619589 秒
选择排序用的时间是:51.1897618272713 秒
插入排序用的时间是:32.164371449444 秒
希尔排序用的时间是:37.1519774161241 秒
快速排序用的时间是:0.0520460002598096 秒

参考大大们修改出来的测试代码:

 

/**************************************************************************************
 * 功能:测试各种排序算法的效率
 * 
 * 作者:清风工作室
 * 日期:2007-7-15
*************************************************************************************
*/


using  System;
using  System.Collections.Generic;
using  System.Text;
using  System.Threading;
using  System.Security.Cryptography;


namespace  LMB.Sort
{


    
class SortTest
    
{

        [System.Runtime.InteropServices.DllImport(
"Kernel32.dll")]
        
static extern bool QueryPerformanceCounter(ref long count);

        [System.Runtime.InteropServices.DllImport(
"Kernel32.dll")]
        
static extern bool QueryPerformanceFrequency(ref long count);

        
//测试数据个数
        const int MAXSIZE = 1024 * 100;

        
生成随机测试数组

        
冒泡排序

        
选择排序

        
插入排序

        
希尔排序

        
快速排序

        


        
/// <summary>
        
/// 测试程序
        
/// </summary>
        
/// <param name="args"></param>

        static void Main(string[] args)
        
{
            
long count = 0;
            
long count1 = 0;
            
long freq = 0;
            
double result = 0;

            
int[] list = new int[MAXSIZE];
            RandomArray(
ref list);


            
冒泡排序测试

            
选择排序测试

            
插入排序测试

            
希尔排序测试

            
快速排序测试

            Console.ReadLine();

        }

    }

}

快速排序的速度惊人,我真怀疑我的程序有问题,但是用小量数据验证又没有问题.

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值