我目前最常用的两种排序:冒泡排序和快速排序
比较一下他们的性能:
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时排序耗时(以最复杂情况测试)
快速排序:

冒泡排序:

来源:https://www.cnblogs.com/flypie/p/4926028.html