-
當(dāng)前位置:首頁(yè) > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
o(nlogn)排序(o(n) 排序)
大家好!今天讓創(chuàng)意嶺的小編來(lái)大家介紹下關(guān)于o(nlogn)排序的問(wèn)題,以下是小編對(duì)此問(wèn)題的歸納整理,讓我們一起來(lái)看看吧。
開(kāi)始之前先推薦一個(gè)非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對(duì)話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫(xiě)出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁(yè)版、PC客戶端
官網(wǎng):https://ai.de1919.com。
創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀的企業(yè),服務(wù)客戶遍布全球各地,如需了解SEO相關(guān)業(yè)務(wù)請(qǐng)撥打電話175-8598-2043,或添加微信:1454722008
本文目錄:
一、編制時(shí)間復(fù)雜度為O(NlogN)的程序
快速排序的平均時(shí)間復(fù)雜度就是O(NlogN): #include<stdio.h> #define N 5 int partition(int *a,int left, int right){ int leftptr,rightptr,pivot,t; pivot=a[right]; leftptr=left-1; rightptr=right; while(1){ while(a[++leftptr]<pivot); while(right>0&&a[--rightptr]>pivot); if(leftptr>=rightptr) break; else t=a[leftptr],a[leftptr]=a[rightptr],a[rightptr]=t; } t=a[leftptr],a[leftptr]=a[right],a[right]=t; return leftptr; } void quicksort(int *a,int left, int right){ int m; if(right-left<=0) return; else { m=partition(a,left,right); quicksort(a,left,m-1); quicksort(a,m+1,right); } } void main() { int i,a[N]={2,3,5,4,1}; printf("快速排序前:"); for(i=0;i<N;i++) printf("%d ",a[i]); quicksort(a,0,N-1); printf("\n快速排序后:"); for(i=0;i<N;i++) printf("%d ",a[i]); }
二、快速排序法的平均時(shí)間復(fù)雜度是多少?
快速排序法的時(shí)間復(fù)雜度是nlogn(n×log以2為底n的對(duì)數(shù))
拓展:
快速排序(Quicksort)是對(duì)冒泡排序的一種改進(jìn)。
快速排序由C. A. R.
Hoare在1962年提出。它的基本思想是:通過(guò)一趟排序?qū)⒁判虻臄?shù)據(jù)分割成獨(dú)立的兩部分,其中一部分的所有數(shù)據(jù)都比另外一部分的所有數(shù)據(jù)都要小,然后再按此方法對(duì)這兩部分?jǐn)?shù)據(jù)分別進(jìn)行快速排序,整個(gè)排序過(guò)程可以遞歸進(jìn)行,以此達(dá)到整個(gè)數(shù)據(jù)變成有序序列。
附各種排序法的時(shí)間復(fù)雜度如下:
三、c++請(qǐng)問(wèn)O(nlogn),O(1)分別指什么
這些都是算法的時(shí)間復(fù)雜度,是衡量算法好壞的標(biāo)準(zhǔn)之一。O(1)時(shí)間復(fù)雜度是常量,比如沒(méi)有任何循環(huán),語(yǔ)句的執(zhí)行時(shí)間恒定常量。至于O(nlogn),是說(shuō)算法的時(shí)間復(fù)雜度是nlogn的倍數(shù),比如若一個(gè)排序算法的復(fù)雜度是O(nlogn),那么對(duì)于n個(gè)要排序的數(shù),執(zhí)行時(shí)間應(yīng)該是nlogn的倍數(shù)。這些是和具體編程語(yǔ)言無(wú)關(guān)的,這些內(nèi)容最好找本算法的書(shū)來(lái)看。
四、為什么快速排序算法的時(shí)間復(fù)雜度是O(nlogn)而不是O(n²)?
最壞情況下數(shù)組從大到小排列,快速排序退化為T(mén)(n)=T(n-1)+k,由遞歸表達(dá)式可算出時(shí)間復(fù)雜度為O(n2)
以上就是關(guān)于o(nlogn)排序相關(guān)問(wèn)題的回答。希望能幫到你,如有更多相關(guān)問(wèn)題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。
推薦閱讀:
招牌設(shè)計(jì) 創(chuàng)意logo(廣告公司logo圖片大全)
自己設(shè)計(jì)商標(biāo)logo(自己設(shè)計(jì)商標(biāo)logo軟件)
如何注冊(cè)商標(biāo)名稱以及l(fā)ogo(如何注冊(cè)商標(biāo)名稱以及l(fā)o)
如何建立一個(gè)網(wǎng)站(如何建立一個(gè)網(wǎng)站鏈接)