码迷,mamicode.com
首页 > 编程语言 > 详细

快速排序、冒泡排序

时间:2015-10-31 19:56:02      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:

我目前最常用的两种排序:冒泡排序和快速排序

比较一下他们的性能:

 1 #include<stdio.h>
 2 
 3 void QuickSort(int * a,int left,int right)
 4 {
 5     if(left>right)
 6     {
 7         return;
 8     }
 9     int stand=a[left];
10     int i=left;
11     int j=right;
12     //得到基准数位置 
13     while(i!=j)
14     {
15         while(i<j&&a[j]>=stand)
16         {
17             --j;
18         }
19         while(i<j&&a[i]<=stand)
20         {
21             ++i;
22         }
23         if(i<j)
24         {
25             int temp=a[i];
26             a[i]=a[j];
27             a[j]=temp;            
28         }
29     }
30     //将基准数放入找出的位置 
31     a[left]=a[i];
32     a[i]=stand;
33     //递归处理 
34     QuickSort(a,left,i-1);
35     QuickSort(a,i+1,right);
36     return;
37 }
38 
39 void  BubbleSort(int * a,int n)
40 {
41     for(int i=0;i<n-1;i++)
42     {
43         for(int j=0;j<n-1;j++)
44         {
45             if(a[j]>a[j+1])
46             {
47                 int temp=a[j];
48                 a[j]=a[j+1];
49                 a[j+1]=temp;
50             }
51         }
52     }
53 }
54 
55 int main()
56 {
57     int * a=new int[10000];
58     for(int i=0;i<10000;i++)
59     {
60         a[i]=10000-i;
61     }
62     QuickSort(a,0,9999);
63     //BubbleSort(a,9999);
64 /*    for(int i=0;i<10000;i++)
65     {
66         printf("%d\n",a[i]);
67     } */
68     return 0;
69 }

运行结果显示:

在数据量较小时冒泡排序和快速排序性能差不多,冒泡有时性能还会更高些,可能是因为快排用的递归要函数出入栈的原因。。。。。。

但随着数据量的增大,快速排序的性能会比冒泡高得多。

数组长度为10000时排序耗时(以最复杂情况测试)

快速排序:

技术分享

冒泡排序:

技术分享

快速排序、冒泡排序

标签:

原文地址:http://www.cnblogs.com/flypie/p/4926028.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!