Time of Update: 2018-12-04
QFIle *localFile = new QFile(fileName);if(!localFile->open(QFile::WriteOnly)){ qDebug()<<"open file error"; QMessageBox::information(this,"","open file error"); return ;}檔案建立和開啟都是成功的。if(bytesReceived < totalBytes){ bytesReceived +=
Time of Update: 2018-12-04
QUICKSORT演算法包含兩個對其自身的遞迴調用,即調用PARTITION後,左邊的子數組和右邊的子數組分別被遞迴排序。QUICKSORT中的第二次遞迴調用並不是必須的,可以用迭代控制結構來代替它,這種技術叫做“尾遞迴”,大多數的編譯器也使用了這項技術。最壞的情況下,就是劃分不好的時候,遞迴深度為O(n),能夠二分的話遞迴深度為O(lgn),但是怎麼才能得到好的劃分呢?前面在快速排序中用了個隨機化技術,“三數取中”能夠讓隨機化更加理想。有這兩項技術護體,快速排序不管在時間複雜度還是空間複雜度上
Time of Update: 2018-12-04
利用基數排序對a[17][4]={" ","COW","DOG","SEA","RUG","ROW","MOB","BOX","TAB","BAR","EAR","TAR","DIG","BIG","TEA","NOW","FOX"}進行排序。“基數排序”可以看做給“計數排序”創造條件,一般的小數用基數排序很麻煩,而且效率不如計數排序,但是要是n個長度為b的長整數或者字串,可以先用r(r<=b)進行劃分,劃分成b/r塊,再利用計數排序就很容易了。時間複雜度為O((b/r)(n+2^r)
Time of Update: 2018-12-04
題目:HEAP-DELETE(A,i)操作將節點i中的項從堆中刪去。對含n個元素的最大堆,請給出時間為O(lgn)的HEAP-DELETE的實現。編程思路:我們可以用堆中最後一個元素a[heapSize]放到節點i
Time of Update: 2018-12-04
標準庫<cstdlib>(被包含於<iostream>中)提供兩個協助產生偽隨機數的函數:函數一:int rand(void);從srand (seed)中指定的seed開始,返回一個[seed, RAND_MAX(0x7fff))間的隨機整數。函數二:void srand(unsigned seed);參數seed是rand()的種子,用來初始化rand()的起始值。可以認為rand()在每次被調用的時候,它會查看:1) 如果使用者在此之前調用過srand(seed)
Time of Update: 2018-12-04
要對n個數進行排序,就要準備n個桶。先對n個數歸一化,就是把它們除以一個較大的數,使之分布在【0,1)之間,然後對每個桶中的數插入排序,最後合并n個桶。時間複雜度為O(n)。#include <string.h>#include <time.h>typedef struct _Node {double value;struct _Node *next;}Node;#define BUFFER_SIZE 10void InsertionSort(Node *a,int
Time of Update: 2018-12-04
在一個數組同時找出最小值和最大值。可以分別找出最小值,比較n-1次;找出最大值,比較n-1次,共比較2n-2次。其實還有更少的比較次數。就是成對的處理元素,先將一對輸入元素互相比較,找出最小值和最大值,然後再用最小值與當前的最小值比較得出新的最小值,用最大值和當前最大值比較,得出新的最大值,所以這一對元素共比較了3次。n個元素則只需比較3*((n/2)的下限)次。當然對於n為偶數和奇數,處理過程稍微不同,詳細見下面代碼中的MinAndMax()。#include <string.h>
Time of Update: 2018-12-04
#include <string.h>#include <time.h>#define BUFFER_SIZE 10int Partition(int *a,int p,int r){int x=0;int i=0;int j=0;int tmp=0;x=a[r];i=p-1;for(j=p;j<r;j++){//將數組劃分為四個區,(a[p]~a[i])<=x,(a[i+1]~a[j-1])>x,(a[j]~a[r-1])還不確定,a[r]=x if(
Time of Update: 2018-12-04
快速排序可以看成區間大小為1的模糊排序。#include <string.h>#include <time.h>#define BUFFER_SIZE 10typedef struct{int start;int end;}Node; int FuzzyPartition(Node *a,int p,int r){Node tmp;int i=0;int j=0;int k=0;Node x;i=p-1;x.start=a[r].start;x.end=a[r].end;
Time of Update: 2018-12-04
在最壞的情況下,利用n+(lgn的上限)-2次比較,即可找到n個元素中的第2小元素。(提示:同時找最小元素)#include <string.h>#include <time.h>#define BUFFER_SIZE 10void FirstAndSecond(int *a,int len,int *first,int *second){int i=0;int
Time of Update: 2018-12-04
這個方法很牛逼,這個排序方法不再像前面那些排序方法一樣根據比較來進行。時間複雜度為O(k+n+k+n+n)=O(n),當k=O(n)時,可以保證時間複雜度為O(n),就可以用計數法來進行排序了。這個方法的一個前提是必須要知道要排序的數組中元素的取值範圍。#include <string.h>#include <time.h>#define BUFFER_SIZE 10void CountingSort(int *a,int len,int
Time of Update: 2018-12-04
類似於快速排序的隨機化版本,但是這裡每次只處理劃分的一側。最壞情況下時間複雜度為O(n^2),即每次都是按最大區間進行劃分。但在平均情況下,任何順序統計量(特別是中位元)都可以線上性時間內得到,時間複雜度為O(n)。#include <string.h>#include <time.h>#define BUFFER_SIZE 10int RandomizedPartition(int *a,int p,int r){int i=0;int j=0;int
Time of Update: 2018-12-04
Shortest PathTimeLimit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K(Java/Others)Total Submission(s): 1386 Accepted Submission(s):336Problem DescriptionWhen YY was a boy and LMY was a girl, they trained forNOI (National Olympiad in
Time of Update: 2018-12-04
1、等價關係(Equivalence Relation)設~是集合G上的一個二元關係,若滿足以下條件:(1)自反性:對任何a∈G,有a~a(2)對稱性:對任何a,b∈G,有a~b,則b~a(3)傳遞性:對任何a,b,c∈G,有a~b且b~c,則a~c則稱~為G中的一個等價關係。2、等價類別(Equivalence Class)集合b={x|x∈G,x~a},即集合G中所有與a等價的元素x組成的子集b,稱為a所在的等價類別,也就是說等價類別是與某元素等價的所有元素組成的集合,等價類別是個集合。3、
Time of Update: 2018-12-04
1、一個單文檔的工程,一直好好的,突然今天開啟VC++6.0的工程的時候,發現app類竟然從類別檢視中消失了,而工程仍然可以正常編譯運行,請問各位這是怎麼回事?怎麼解決?答:這是vc6的bug,出現這種問題時,刪除工程目錄下的.ncb檔案,重新開啟工程即可。2、debug工程ChatRoom時不報錯,release時卻出了很多錯誤,怎麼回事,怎麼解決?答:socket程式,debug時連結了ws2_32.lib所以不報錯,release時也要連結,否則就會報錯。 3.今天模仿龔建偉寫的那本vc/
Time of Update: 2018-12-04
我用的是websphere6.1+myeclipse.我給你找找我總結的那個。。=找到了 不清楚再問我該文內容是由myeclipse官網上找的文檔和自己在實踐中總結的內容組成. 1. 下載下websphere6.1安裝,在安裝的過程中要記住自己設定的node name和cell name. 2. 啟動eclipse,在window->preperences->myeclipse->application servers->websphere6.1
Time of Update: 2018-12-04
O(∩_∩)O~,這個名字乍聽起來比較黃。其實就是先快速排序進行劃分,等劃分小到一定規模比如k時,進行插入排序,因為規模小到一定程度,插入排序的效率更高。我在前面還寫過一個合并插入排序的演算法,思想跟這個相似。總的時間複雜度為O(nk+nlg(n/k)),這個很好證明:先進行二分,劃分到規模都為K時停止劃分,此時深度為h,則T(n/2^h)=k,則h=lg(n/k),最底層規模為K的分葉節點數目為2^lg(n/k)=n/k,每個k內部插入排序,最壞情況為O(k^2),則總的插入排序時間為(n/k
Time of Update: 2018-12-04
在MFC中和定時器相關的有三個函數:UINT SetTimer( UINT nIDEvent, UINT nElapse, void (CALLBACK EXPORT* lpfnTimer)( HWND, UINT, UINT, DWORD)
Time of Update: 2018-12-04
在oj做題時while迴圈中使用scanf時,有時會出現Output Limit Exceed錯誤,弄得我很糾結,最後只能通過去掉while迴圈來避免。今天決定把根找出來,功夫不負有心人,原來有人也碰到過類似的糾結,先轉貼如下,與各位共用。scanf("%d%d", &a, &b);如果a和b都被成功讀入,那麼scanf的傳回值就是2如果只有a被成功讀入,傳回值為1如果a和b都未被成功讀入,傳回值為0如果遇到錯誤或遇到end of file,傳回值為EOF。
Time of Update: 2018-12-04
雖然插入排序的時間複雜度為O(n^2),合并排序的時間複雜度為O(nlgn),但是當子問題規模很小時,插入排序的效率要比合并排序高,所以,可以將合并排序和插入排序進行組合,當合并排序的子數組小到一定程度時,不再進行劃分,而是改變演算法,用插入排序演算法對其進行排序。#include <stdio.h>#include <string.h>#include <time.h>#define BUFFER_SIZE 10int InsertionSort(int *