快速排序、冒泡排序

半城伤御伤魂 提交于 2020-02-11 07:19:17

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

比较一下他们的性能:

 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-i-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时排序耗时(以最复杂情况测试)

快速排序:

冒泡排序:

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!