冒泡排序 和 归并排序
生活随笔
收集整理的這篇文章主要介紹了
冒泡排序 和 归并排序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
時間復雜度O(nlog2n)
歸并排序:
void Merge(int l,int mid,int r)
{
??? int i=l,j=mid+1,k=0;
??? while(i<=mid && j<=r)
??? {
??????? if(a[i]>a[j])
??????? {
??????????? t[k++]=a[j++];
??????????? cnt+=mid-i+1;
??????? }
??????? else
??????? {
??????????? t[k++]=a[i++];
??????? }
??? }
??? while(i<=mid) t[k++]=a[i++];
??? while(j<=r) t[k++]=a[j++];
??? //將歸并完成的結果復制到原數組中
??? for(i=0; i<k; i++)
??? {
??????? a[l+i]=t[i];
??? }
}
????? 一趟冒泡排序需要進行的是n-1,n-2,……,2,1,0的和次比較。即n*(n-1)/2次。總的時間復雜度為O(n^2).
冒泡排序:
?
for(i=0; i<n-1; i++){flag=false;for(j=0; j<n-i-1; j++){ if(a[j]>a[j+1]){int tem=a[j];a[j]=a[j+1];a[j+1]=tem;cnt++;flag=true;}}if(!flag) //本輪沒交換。則成功 {break;}}?
?
?
轉載于:https://www.cnblogs.com/Jason-Damon/archive/2012/04/14/2446638.html
總結
以上是生活随笔為你收集整理的冒泡排序 和 归并排序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谷歌浏览器一直显示弹框登陆代理解决方法
- 下一篇: Anaconda 安装操作及遇到的坑