归并排序代码

来源:互联网 发布:js中的li怎么去掉 编辑:程序博客网 时间:2024/04/29 03:02

1、归并排序,最差时间复杂度,最好时间复杂度,平均时间复杂度均是O(nlog(n))。需要引入一个辅助的数组,空间复杂度O(n)

//归并排序void mergeSort(int A[],int temp[],int left,int right){if(left==right) return;int mid = (left+right)/2;//左右排序mergeSort(A,temp,left,mid);mergeSort(A,temp,mid+1,right);//归并两个已排序的数组//使用一个辅助的空间for(int i=left;i<=right;i++)temp[i] = A[i];//左右2个子数组的其实indexint i1 = left;int i2 = mid+1;for(int curr=left;curr <= right;curr++){if(i1==mid+1)A[curr] = temp[i2++];else if(i2>right)A[curr] = temp[i1++];else if (temp[i1]<temp[i2])A[curr] = temp[i1++];elseA[curr] = temp[i2++];}}


0 0
原创粉丝点击