我目前最常用的两种排序:冒泡排序和快速排序
比较一下他们的性能:
1 #include2 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 =stand)16 {17 --j;18 }19 while(i <=stand)20 {21 ++i;22 }23 if(i 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时排序耗时(以最复杂情况测试)
快速排序:
冒泡排序: