归并排序
思路 归并排序就是先将要排序的元素打半拆分,拆至一个元素时,再使用二路合并的方法将元素重新合并回来。 如图所示: 特点 归并排序具有稳定的特点,并且时间的复杂度比一些其他的排序时间用的少一点,它的时间复杂度是O(n log n) 。 代码如下: #include"stdio.h" int a[10010],b[10010]; void merge(int a[],int begin,int mid,int last) { int i,j,k; k=i=begin; j=mid; while(i<mid&&j<last)//二路合并 { if(a[i]<a[j])b[k++]=a[i++]; else b[k++]=a[j++]; } while(i<mid)//如果有剩下的直接往后装 { b[k++]=a[i++]; } while(j<last) { b[k++]=a[j++]; } for(k=begin;k<last;k++)a[k]=b[k]; } void mergesort(int a[],int begin,int last) { if(begin==last-1)return ;//如果只剩一个值就返回 int mid=(begin+last)/2; mergesort(a,begin,mid);//打半 mergesort(a,mid,last); merge(a