實習報告網

導航欄

×

排序算法思想總結|排序算法思想總結(推薦12篇)

發布時間:2022-05-28

排序算法思想總結(推薦12篇)。

? 排序算法思想總結

一、教材分析

《對數據進行排序和篩選》是初中信息技術八年級下冊第5單元《數據分析和管理》第1課時內容。本節課是在前幾節課學習了數據輸入、工作表的編輯以及對數據運算等基本知識的基礎上,進一步學習對數據進行排序和篩選。本課共由三個部分組成,分別是簡單排序、復雜排序、自動篩選,是對前面所學知識的一個綜合運用,也是以后學習用圖表表示數據的重要基礎。通過本節課的學習能讓學生學會排序和篩選的'操作方法,在生活中能用這些方法解決實際問題,達到學以致用。

二、學情分析

學生通過前面各單元內容的學習,對數據的輸入、編輯、運算有了一定的操作能力,排序和篩選對學生來說在實際生活中應用十分廣泛,如比賽成績的排名、優秀選手的篩選等,如果能夠掌握EXCEL排序與篩選的操作方法,將大大地提高學生解決問題的能力。但基于他們年齡的特征,他們對理論性強的知識點不易理解,認知較直觀,而對具體操作易于接受。另外因諸多因素的不同,造成他們對信息技術的認知能力、實際操作能力、知識水平各不相同,形成了不同的層次。因此我在教學中利用任務驅動、自主探究,從而讓學生掌握排序與篩選的操作。

三、教學目標

1、知識與技能

學會排序和篩選的操作方法

2、過程與方法

通過對數據排序和篩選,讓學生理解排序、篩選的意義;理解排序和篩選在數據管理中的作用。

3、情感態度和價值觀

? 排序算法思想總結

這里實現了選擇數組里面最小值的代碼,讀者可以以此類推自己寫出選擇最大值的算法

/** * 找到最小的元素 * @param array 輸入的數組 * @param arraySize 數組大小 * @param minNumber 輸出最小值 * @return 最小值在數組里面的位置 */size_t findMin(int array[] , int arraySize , int * minNumber){ if(array == NULL || arraySize <= 0 || minNumber == NULL) return -1; int minPos = -1; int minNumberTemp=INT_MAX; for (int i = 0; i < arraySize; ++i) { if(array[i] < minNumberTemp) {minNumberTemp=array[i];minPos = i; } } *minNumber = minNumberTemp; return minPos;}

運行結果:

input array is :

48 18 97 27 13 85 8 38 95 31

find the min number 8 at pos 7

我們從代碼里面可以看出for循環運行n次,每次都要進行一次比較if(array[i] < minNumberTemp),如果我們標記的最小值大于當前的數組元素,就重新標記當前數組元素為最小值。因為這個代碼比較簡單,這里不再贅述。

選擇算法之選取最大數和最小數

條件改變,現在要選擇一個序列里面的最大數和最小數,這里和上面講述過的選擇最大數或者最小數有所不同,上面的要做的只是選擇最大值或者最小值,而現在我們要同時選擇最大值和最小值。

博主第一次看見這個題目時,和只選擇最小數的情形一對比,這不是一樣的么,只要在循環里面多加一個最大數的比較不就行了?的確是可以,我們來看一下部分代碼實現

? 排序算法思想總結

在使用wps處理數據的時候難免會遇到要使用排序的情況,而有些時候的排序又并不是單單的按照日期或者數字來排序,往往要根據實際的情況來進行排序工作,這使得的一些對排序功能不是特別了解的人來說無疑是一種痛苦,在這里我就教教大家怎么使用wps排序中的自定義排序哦首先呢我們舉個栗子,以一個簡單的表格為例

比如說我們希望以學歷的高低來排序,那么我們首先要準備自定義的排序序列,以逗號隔開,要注意的是這里的逗號是英文輸入法下的逗號哦,不要用中文輸入法下的標點哦,把這個序列復制下來

然后我們要做的是點擊wps左上方的wps表格按鈕,然后選取選項按鈕

在選項中呢,我們選擇自定義序列標簽、

在自定義序列的右邊,輸入序列的框中把前面復制的序列順序粘貼下來,點擊添加之后點擊確認,然后在數據中選擇排序

選擇好你自己定義的序列,跟行列,方式然后點擊確認就完成了,

,

? 排序算法思想總結

拓撲排序是對有向無圈圖的頂點的一種排序,它使得如果存在一條從vi到vj的路徑,那么在排序中Vj出現在Vi后面,一個簡單的求拓撲排序的算法是先找出任意一個沒有入邊的頂點,然后我們顯示該頂點,并將它和它的邊一起從圖中刪除。然后為們對圖的其余部分應用同樣的方法處理。但是這個方法有一點不好,就是每次都要找入度為0的頂點,這種頂點一般很少,如果圖很大的話,每次都遍歷一遍就浪費很多時間。升級版是先計算每一個頂點的入度,然后將入度為0的頂點存入隊列,操作完之后再更新入度。這樣就不用遍歷整個圖而只需要從出隊列操作就可以了。下面是代碼,隊列的操作在上一篇文章中已經實現,只要把類型改成節點的指針即可。

topSort.h

#ifndef __TOPSORT_H#define __TOPSORT_Hstruct graph;struct listNode;typedef struct graph *Graph;typedef struct listNode *Vertex;struct graph{ int numberOfVertex; Vertex *vertexs;};struct listNode{ int indegree; int vertexnumber; Vertex next;};void topSort(Graph G);Graph initinalizeAdjList(int listSize);Graph insertAdjList(Graph G,int pos,int a[],int N);#endif

topSort.c

#include topSort.h#include queue.hvoid topSort(Graph G){ Queue Q; Vertex V,W; int counter=0; int i; Q=createQueue; for(i=1;i<=G->numberOfVertex;i++)//找到入度為0的點,將它們入隊列 { if(G->vertexs[i]->indegree==0) EnQueue(G->vertexs[i],Q);} while(!isEmpty(Q))//刪除該點,然后將其相鄰的點入度減1,再重新檢測入隊列 { V=DeQueue(Q); printf( %d ,V->vertexnumber); counter++; for(i=1;i<=G->numberOfVertex;i++) { if(isAdj(G->vertexs[i],V)) { if((--G->vertexs[i]->indegree)==0) EnQueue(G->vertexs[i],Q); } } } if(counter!=G->numberOfVertex) { printf(Graph has a cycle); exit(-1); } deleteQueue(Q);}Graph initinalizeAdjList(int listSize)//初始化一個鄰接表,就是創建一個指針數組,每個元素只想一個節點{ Graph G; int i; G=(Graph)malloc(sizeof(struct graph)); if(G==NULL) { printf(out of space); exit(-1); } G->numberOfVertex=listSize; G->vertexs=(Vertex*)malloc(sizeof(Vertex)*(listSize+1)); for(i=1;i<=listSize;i++)//這里簡單的直接給出節點編號,實際中可以用哈希的方法來獲得 { G->vertexs[i]=(Vertex)malloc(sizeof(struct listNode));//初始化節點 G->vertexs[i]->vertexnumber=i; G->vertexs[i]->next=NULL; } return G;}Graph insertAdjList(Graph G,int pos,int a[],int N)//根據給出的數組來給鄰接表插入元素{ int j; Vertex v,w; G->vertexs[pos]->indegree=N; w=G->vertexs[pos]; for(j=0;jvertexnumber=a[j]; v->next=NULL; while(w->next) w=w->next; w->next=v; }}int isAdj(Vertex v,Vertex w) //if v adj w判斷是不是和目標節點相鄰{ Vertex t; t=v->next; while(t) { if(t->vertexnumber==w->vertexnumber) return 1; t=t->next; } return 0;}

main.c

#include queue.h#include topSort.hint main(){ Graph G; int i; int a1[]={2,4,3}; int a2[]={4,5}; int a3[]={6}; int a4[]={6,7,3}; int a5[]={4,7}; int a7[]={6}; G=initinalizeAdjList(7); insertAdjList(G,1,a1,3); insertAdjList(G,2,a2,2); insertAdjList(G,3,a3,1); insertAdjList(G,4,a4,3); insertAdjList(G,5,a5,2); insertAdjList(G,6,a5,0); insertAdjList(G,7,a7,1); for(i=1;i<=7;i++) { Vertex v; v=G->vertexs[i]; while(v) { printf( %d ,v->vertexnumber); v=v->next; } printf(); } topSort(G);}

? 排序算法思想總結

活動目標

1、培養幼兒的觀察、比較能力和思維的靈敏性。

2、學習按物體的顏色排序。

3、在游戲中讓幼兒體驗與同伴團結協作的樂趣。

4、有興趣參加數學活動。

5、能與同伴合作,并嘗試記錄結果。

重點難點

重點:培養幼兒的觀察能力。

難點:四種顏色的排序。

活動準備

紅、黃、藍、綠的珠子若干,串繩若干,紅、黃、藍、綠的頭飾若干,火車頭粘貼一個,紅、黃、藍、綠車廂粘貼若干。

活動過程

一、開始部分:

(1)大二班的小朋友最會串珠子了,今天楊老師就是寶石商人,我來收購小朋友做的手鏈,看看誰做的手鏈最漂亮。

(2)幼兒自由串珠子。

二、基本部分:

1、操作活動:串手鏈。

(1)引導幼兒觀察所串珠子的顏色排列特點。(重點)

(2)以寶石商訂購的形式讓幼兒按紅黃、紅黃藍、紅黃藍綠的排序串珠?;顒又欣蠋熭o導并讓幼兒互相幫助完成。

2、游戲活動:小火車。

玩法:小朋友戴上紅、黃、藍、綠的頭飾,老師邊念:“小火車真漂亮,紅黃紅黃一節節?!边叞鸦疖囌迟N出來,然后老師做火車頭小朋友根據自己的頭飾按兒歌要求排列做車廂。老師根據幼兒能力及游戲的熟練程度來定火車的顏色排序。紅黃藍綠的排序是難點,讓能力強的小朋友提醒能力弱的小朋友。

三、結束部分:

小結游戲情況,鼓勵幼兒。

四、延伸部分:

小朋友我們今天做的手鏈顏色豐富、排列有規律,這樣的手鏈很漂亮,我們把這樣漂亮的手鏈畫出來給爸爸、媽媽看,好嗎?

教學反思

因為所選內容是幼兒平時接觸、有興趣的,所以幼兒接受快。在開始部分幼兒自由串珠子時,就有很多孩子會按顏色排序來串了,后經觀察排序規律小朋友們都能按要求串珠子了。在活動中讓幼兒互相幫助使每一位幼兒都能完成任務,并體驗交流、游戲的樂趣。

? 排序算法思想總結

/** * 找到數組中的中位數 * @param array 輸入的數組 * @param lefyBorder 數組左邊界 * @param rightBorder 數組右邊界 const int & arraySize = rightBorder - leftBorder+1; * @return 中位數的坐標 */int BFPRT(int array[] , int leftBorder , int rightBorder){ if(array == NULL || leftBorder >rightBorder ) return -1; const int & arraySize = rightBorder - leftBorder +1; // 判斷元素的個數是否大于五個 if(arraySize <= 5) { insertSort(array , arraySize); return leftBorder+arraySize/2; } // 如果元素個數大于五個,那么就五五分組 const int & groupSize = 5; int * groupStart=array; int midCount=0; for (int i = leftBorder+groupSize; i <= rightBorder; i+=groupSize) { insertSort(groupStart , groupSize); exchange(array , leftBorder+midCount , i-3 );//將中位數放在數組的最前面 ++midCount; groupStart+=groupSize; } // 剩下的不滿五個進行排序 if(arraySize%groupSize != 0) { insertSort(groupStart , arraySize%groupSize); exchange(array , leftBorder+midCount ,leftBorder + arraySize - arraySize%groupSize + (arraySize%groupSize - 1)/2); ++midCount; } // 現在新選出來的所有中位數都在前midCount里面 // 返回中位數的中位數 return BFPRT(array , leftBorder , leftBorder+midCount-1);}/** * 選擇第K大的元素 * @param array 輸入的數組 * @param leftBorder 左邊界 * @param rightBorder 右邊界 * @param k 第k個 * @param kthNumber 第k大的數 */void BFPRTselect(int array[] , int leftBorder , int rightBorder ,int k , int * kthNumber){ if(array == NULL || leftBorder >rightBorder || kthNumber == NULL || k >(rightBorder - leftBorder + 1)) return ; /** 選取主元 */ int index = BFPRT(array , leftBorder , rightBorder); if(index == -1) return; cout<”<”<<

運行結果:

before sort the array:

75 84 30 35 77 60 75 32 64 2

lefy—>0 right—>9 index:0 midNumber :75

lefy—>0 right—>6 index:1 midNumber :32

lefy—>0 right—>1 index:1 midNumber :30

2th max number is———————- 30

2 30 32 60 75 64 35 75 84 77

lefy—>0 right—>9 index:0 midNumber :32

lefy—>0 right—>1 index:1 midNumber :2

1th max number is———————- 2

2 30 32 60 75 64 35 75 84 77

lefy—>0 right—>9 index:0 midNumber :32

3th max number is———————- 32

30 2 32 60 75 64 35 75 84 77

lefy—>0 right—>9 index:0 midNumber :32

lefy—>3 right—>9 index:4 midNumber :84

lefy—>3 right—>8 index:4 midNumber :75

lefy—>3 right—>6 index:5 midNumber :35

lefy—>4 right—>6 index:5 midNumber :75

lefy—>4 right—>5 index:5 midNumber :60

lefy—>5 right—>5 index:5 midNumber :64

6th max number is———————- 64

2 30 32 35 60 64 75 75 77 84

after sort the array:

2 30 32 35 60 64 75 75 77 84

注:本文中的所有代碼都在這里

<

? 排序算法思想總結

綜合排序的工作總結

綜合排序是信息檢索領域中重要的一種排序算法。其作用是根據不同的評價指標,綜合多個信息因素對數據進行排序,從而獲得更加精準的搜索結果。在實際的工作中,綜合排序算法被廣泛應用于搜索引擎、電子商務、社交網絡等多個領域。本文將對綜合排序的工作流程進行總結,介紹其應用場景和優化方法。

一、綜合排序的工作流程

綜合排序的工作流程主要分為以下三個步驟:

1. 特征提取和權重設置

特征提取是綜合排序的關鍵環節,它是指將待排序的數據進行特征抽取,生成代表數據的特征向量。通常情況下,特征提取包括文本特征、圖像特征、社交網絡特征等。在提取特征的同時,需要考慮不同特征的相對重要性,為每個特征設置不同的權重。對于某些特定領域的數據,通常需要通過專業知識和經驗來設置權重,從而更好地反映數據的本質特征。

2. 綜合評價和排序

在特征提取和權重設置完成后,綜合排序算法開始對數據進行評價,其中包括基于內容的相似性、用戶喜好度、時效性、流行度、質量等多個指標。評價結果最終會被用于生成一個排序函數,來決定每個數據的位置。常見的排序算法包括PageRank、TF-IDF、BM25、SVM等。

3. 評估和反饋優化

綜合排序算法是一個迭代式的過程,在實際應用中需要不斷調整和優化。評估和反饋優化是一項重要的工作,它可以幫助我們發現算法中的問題,并適時進行改進。評估和反饋優化主要包括以下兩個環節:

(1)排序結果的評估:這一步用于評估算法的性能和優化方向。通常我們會采用F1-score、AUC、MAP等指標來衡量算法的準確性和效率。如果算法存在問題,我們需要優化特征提取、評價方式、權重設置等方面。

(2)反饋優化:這一步根據評估結果對算法進行優化。比如,我們可以通過增加或減少某些特征的權重來優化算法效果;或者加入新的特征或評價指標,提高算法的精準度。

二、應用場景

綜合排序算法在信息檢索、電子商務、社交網絡等領域都有廣泛應用:

1. 信息檢索領域。綜合排序對于搜索引擎的結果排序非常重要。比如,谷歌搜索就是基于PageRank算法進行排序的。

2. 電子商務領域。綜合排序可以幫助電子商務網站更好地挖掘用戶的購物喜好,提高用戶購買轉化率。

3. 社交網絡領域。綜合排序可以用于社交網絡的內容推薦、好友推薦等方面。比如Facebook會根據用戶的興趣愛好、歷史行為等信息,幫助用戶推薦內容或好友。

三、優化方法

綜合排序算法的優化主要有以下幾個方面:

1. 特征選擇。在特征提取時,要盡可能選取對任務有幫助的關鍵特征,避免選取無關或冗余的特征。

2. 權重設置。權重設置要合理公正,根據實際情況加以調整。

3. 數據清洗。對于不規則的數據需要先進行數據清洗,避免干擾綜合排序結果。

4. 排序算法優化。綜合排序算法會涉及到較多的計算,可以通過緩存、多線程等方式進行優化。

綜合排序是信息檢索領域中重要的排序算法。通過合理的特征提取和權重設置,綜合多個評價指標進行排序,能夠更好地反映數據的本質特征和用戶需求,提高搜索效率和準確性。在實際的應用中,我們需要不斷進行評估和反饋優化,結合應用場景和數據特點,進行算法優化,以滿足用戶需求。

? 排序算法思想總結

總是信任你的同伴,卻也要不斷占據主動,以決定你與誰搭檔;

總是相信上帝,但永遠要把你的房子建在高處;

永遠愛你的鄰居,并且總是選擇居住在芳鄰的隔壁;

賽跑未必快者贏,戰爭未必強者勝,但快與強是你最好的選擇;

把你的賭注壓在“轉向另一面”和“適可而止”之間,把你的賭注押在“欲速則不達”和“當斷不斷,反受其亂”之間;

關于贏:它不重要,真正重要的是光明磊落、遵守游戲規則;

關于輸:它不重要,真正重要的是你樂在其中;

關于怎么玩游戲:贏。

? 排序算法思想總結

活動目標

1、引導幼兒學習區別寬窄,并能用詞表達。

2、讓幼兒學習按照寬窄的差異進行正逆排序,初步體驗序列中物體的相對性和可變性。

活動準備

1、教具:一個信封,內有一張光盤。每人兩張寬窄、顏色各不同的紙條:黃色的寬,綠色的窄。

2、 學具:第一組:寬窄排序材料(同顏色、同長度、寬窄不同);

第二組:寬窄排序材料(不同顏色、同長度、不同寬窄);

第三組:寬窄排序材料(顏色、長度、寬窄均不同);

活動重點

引導幼兒學習按照物體寬窄的差異進行正逆排序。

活動難點

引導幼兒不受物體顏色、形狀、材料的干擾,進行寬窄差異的排序,并在選擇的過程中強化幼兒對序列中物體的相對性和可變性的體驗。

活動過程

一、 看光盤(集體活動)

互動問題:小朋友們,今天老師收到一封信,我們一起看看好嗎?

放光盤,電視里出現綠泡泡的形象:小朋友們,你們好,我是綠泡泡,我和紅果果、小咕咚在泡泡飛船航行時遇到困難了。有一個國家的國王出了三道題,如果我們答對了,就可以回到智慧樹;如果答錯了,就只能留在這個國家了?,F在我們需要你們的幫助,聰明的小朋友們快幫幫我們吧,我們很想回到智慧樹與你們在一起。

指導要點:指導幼兒能分清2張紙,黃色的寬,綠色的窄。

二、第一題:(集體活動)

出示第一組:寬窄排序材料(同顏色、同長度、寬窄不同);

1、互動問題:小朋友們,你們怎樣知道哪個寬、哪個窄?從最寬到最窄的怎樣排序嗎?

2、指導要點:老師啟發幼兒用重疊比較的方法區別寬窄。在這里找出最寬的,再在這里找出最寬的,依次進行排序。

三、第二題:(集體活動)

出示第二組:寬窄排序材料(不同顏色、同長度、不同寬窄);

1、互動問題:看看這些紙有什么一樣的?有什么不一樣的?從寬到窄排序?從窄到寬排序?

2、指導要點:幼兒能說出顏色不一樣,長度一樣,寬窄不一樣。用重疊法區分寬窄。

四、第三題:(集體活動)

出示第三組:寬窄排序材料(顏色、長度、寬窄均不同);

1、互動問題:請大家用重疊比較的方法區分紙條的寬窄

2、指導要點:老師重點指導幼兒用重疊比較的方法區分紙條的寬窄。幼兒操作,老師檢查。(幼兒邊操作邊講述:從怎樣排到怎樣。)

五、看光盤:(集體活動)

綠泡泡:謝謝,聰明的小朋友們,國王已經看過你們的答案了,我和紅果果、小咕咚已經回到智慧樹了。謝謝你們的幫助。

活動延伸

將三組的材料投放到區域中,幼兒進行闖關游戲,進行寬窄排序。

? 排序算法思想總結

快速法定義了三個參數,(數組首地址*a,要排序數組起始元素下標i,要排序數組結束元素下標j).

它首先選一個數組元素(一般為a[ (i+j)/2 ],即中間元素)作為參照,把比它小的元素放到它的左邊,比它大的放在右邊。

然后運用遞歸,在將它左,右兩個子數組排序,最后完成整個數組的排序。

下面分析其代碼:

[cpp] view plaincopy

void quick(int *a,int i,int j)

{

int m,n,temp;

int k;

m=i;

n=j;

k=a[(i+j)/2]; /*選取的參照*/

do

{

while( a[m]

m++; /* 從左到右找比k大的元素*/

while( a[n] >k && n>i )

n--; /* 從右到左找比k小的元素*/

if(m<=n)

{ /*若找到且滿足條件,則交換*/

temp=a[m];

a[m]=a[n];

a[n]=temp;

m++;

n--;

}

}

while(m<=n);

if(m

quick(a,m,j); /*運用遞歸*/

if(n>i)

quick(a,i,n);

}

? 排序算法思想總結

為幫助同學們學好java算法,yjbys小編為大家分享最新java算法——字符組合排序試題和答案如下:

題目:

用1、2、2、3、4、5這六個數字,用java寫一個main函數,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"與"5"不能相連。

不是特別難的題目,暴力算和用圖論算(深度遍歷)都可以,結果是198.圖論的'話就是構造無向圖,然后深度優先遞歸。

package com.graphic;

import java.util.Iterator;

import java.util.TreeSet;

public class CharSequence {

private String[] c = {"1","2","2","3","4","5"};

private int n = c.length;

private boolean[] visited = new boolean[n];

private int[][] g = new int[n][n];

private TreeSetts = new TreeSet();

private String result = "";

public CharSequence(){

for(int i=0; i

for(int j=0; j

if(i == j) g[i][j] = 0;

else g[i][j] = 1;

}

}

g[3][5] = 0;

g[5][3] = 0;

}

public void depthFirst(int index){

visited[index] = true;

result += c[index];

if(result.length() == n){

ts.add(result);

result = result.substring(0,result.length()-1);

visited[index] = false;

}

else{

for(int i=0; i

if(!visited[i] && g[index][i] == 1){

depthFirst(i);

}else continue;

}

result = result.substring(0,result.length()-1);

visited[index] = false;

}

}

public void graphicGet(){

for(int i=0; i

depthFirst(i);

}

int count = 0;

System.out.print("圖論的結果:");

Iteratorit = ts.iterator();

while(it.hasNext()){

String tmp = it.next();

if(ntains("35")) continue;

if(ntains("53")) continue;

if(tmp.charAt(3) == '4') continue;

System.out.println(tmp);

count++;

}

System.out.println("共計:"+count+"個");

}

public void bruteForce(){

System.out.println("暴力搜的結果:");

int count = 0;

for(int i = 122345; i<543222; i++){

String tmp = ""+i;

if(tmp.charAt(3) == '4') continue;

if(ntains("35")) continue;

if(ntains("53")) continue;

if(ntains("5") && ntains("4") && ntains("3") && ntains("1"))

{

int index = tmp.indexOf("2");

if(index == -1) continue;

if(index == tmp.length()-1) continue;

if(tmp.substring(index+1).contains("2")){

System.out.println(tmp);

count++;

}

}

}

System.out.print("共計:"+count+"個");

}

public void recrusive(){

}

public static void main(String[] args) {

CharSequence cs = new CharSequence();

//圖論的方法

cs.graphicGet();

//暴力搜索

cs.bruteForce();

? 排序算法思想總結

/** * 找到數組中的中位數 * @param array 輸入的數組 * @param lefyBorder 數組左邊界 * @param rightBorder 數組右邊界 const int & arraySize = rightBorder - leftBorder+1; * @return 中位數的坐標 */int BFPRT(int array , int leftBorder , int rightBorder){ if(array == NULL || leftBorder > rightBorder ) return -1; const int & arraySize = rightBorder - leftBorder +1; // 判斷元素的個數是否大于五個 if(arraySize <= 5) { insertSort(array , arraySize); return leftBorder+arraySize/2; } // 如果元素個數大于五個,那么就五五分組 const int & groupSize = 5; int * groupStart=array; int midCount=0; for (int i = leftBorder+groupSize; i <= rightBorder; i+=groupSize) { insertSort(groupStart , groupSize); exchange(array , leftBorder+midCount , i-3 );//將中位數放在數組的最前面 ++midCount; groupStart+=groupSize; } // 剩下的不滿五個進行排序 if(arraySize%groupSize != 0) { insertSort(groupStart , arraySize%groupSize); exchange(array , leftBorder+midCount ,leftBorder + arraySize - arraySize%groupSize + (arraySize%groupSize - 1)/2); ++midCount; } // 現在新選出來的所有中位數都在前midCount里面 // 返回中位數的中位數 return BFPRT(array , leftBorder , leftBorder+midCount-1);}/** * 選擇第K大的元素 * @param array 輸入的數組 * @param leftBorder 左邊界 * @param rightBorder 右邊界 * @param k 第k個 * @param kthNumber 第k大的數 */void BFPRTselect(int array , int leftBorder , int rightBorder ,int k , int * kthNumber){ if(array == NULL || leftBorder > rightBorder || kthNumber == NULL || k >(rightBorder - leftBorder + 1)) return ; /** 選取主元 */ int index = BFPRT(array , leftBorder , rightBorder); if(index == -1) return; cout<”<”<<

運行結果:

before sort the array:

lefy—>0 right—>9 index:0 midNumber :75

lefy—>0 right—>6 index:1 midNumber :32

lefy—>0 right—>1 index:1 midNumber :30

lefy—>0 right—>9 index:0 midNumber :32

lefy—>0 right—>1 index:1 midNumber :2

lefy—>0 right—>9 index:0 midNumber :32

lefy—>0 right—>9 index:0 midNumber :32

lefy—>3 right—>9 index:4 midNumber :84

lefy—>3 right—>8 index:4 midNumber :75

lefy—>3 right—>6 index:5 midNumber :35

lefy—>4 right—>6 index:5 midNumber :75

lefy—>4 right—>5 index:5 midNumber :60

lefy—>5 right—>5 index:5 midNumber :64

after sort the array:

<

猜你喜歡

更多>
91精品国产99久久_天天干天天干天天干天天_国产精品jizz在线观看软件_成人黄色在线播放

  1. <form id="fsw4v"></form>

    <sub id="fsw4v"></sub>

    <strike id="fsw4v"><pre id="fsw4v"></pre></strike>

    <form id="fsw4v"></form>
    <nav id="fsw4v"></nav>
    <form id="fsw4v"></form>
      <sub id="fsw4v"><listing id="fsw4v"><meter id="fsw4v"></meter></listing></sub>

      <nav id="fsw4v"><listing id="fsw4v"><meter id="fsw4v"></meter></listing></nav>
      1. <form id="fsw4v"><th id="fsw4v"><track id="fsw4v"></track></th></form>
        国产精品天美传媒入口| 久久久噜噜噜久久人人看| 在线观看视频亚洲| 亚洲一区精彩视频| 亚洲国产精品一区在线观看不卡| 午夜免费久久久久| 亚洲精品国产无天堂网2021| 伊人精品成人久久综合软件| 先锋影音一区二区三区| 亚洲国产美女| 亚洲影音一区| 伊人成人在线视频| 亚洲美女少妇无套啪啪呻吟| 国产精品日本精品| 久久综合伊人77777麻豆| 亚洲三级影片| 国产欧美亚洲精品| 亚洲精品一区二区三区福利| 欧美在线亚洲在线| 亚洲宅男天堂在线观看无病毒| 久久一区二区三区四区五区| 久久久久久久久久久久久久一区| 欧美日韩精品一区二区| 性伦欧美刺激片在线观看| 99精品欧美一区二区三区综合在线| 国产欧美日韩三区| 免费观看久久久4p| 国产精品欧美日韩久久| 欧美日韩黄视频| 一区二区三区在线观看欧美| 1204国产成人精品视频| 欧美成人亚洲| 欧美日韩精品二区| 狂野欧美激情性xxxx欧美| 国产精品欧美日韩| 欧美理论电影在线观看| 免费观看久久久4p| 亚洲日本欧美天堂| 欧美影院一区| 久久久久久久高潮| 欧美了一区在线观看| 欧美刺激午夜性久久久久久久| 尤物99国产成人精品视频| 欧美性事免费在线观看| 韩国一区二区三区美女美女秀| 欧美激情精品久久久久久免费印度| 欧美日本一区二区三区| 国产毛片一区| 久久五月婷婷丁香社区| 国产精品黄页免费高清在线观看| 欧美丰满少妇xxxbbb| 久久国产精品99精品国产| 亚洲女同同性videoxma| 欧美私人啪啪vps| 国产欧美在线播放| 国产视频久久| 久久久亚洲国产美女国产盗摄| 中文成人激情娱乐网| 国产午夜精品美女视频明星a级| 国产精品久久久久9999吃药| 一本一本久久a久久精品综合妖精| 国产日本欧美视频| 1000部国产精品成人观看| 久久香蕉国产线看观看网| 久久精品1区| 久久久久一区二区三区| 午夜影视日本亚洲欧洲精品| 午夜精品免费| 一区二区三区日韩精品视频| 在线综合亚洲欧美在线视频| 国产精品黄页免费高清在线观看| 欧美亚日韩国产aⅴ精品中极品| 亚洲狠狠婷婷| 亚洲欧洲日产国码二区| 久久久久九九九九| 亚洲精品三级| 国产精品一区2区| 欧美一级久久| 欧美成人官网二区| 99热精品在线| 国产欧美精品在线| 嫩草国产精品入口| 免费欧美电影| 久久久精品999| 欧美二区在线观看| 欧美特黄a级高清免费大片a级| 免费成人小视频| 在线观看福利一区| 欧美男人的天堂| 99人久久精品视频最新地址| 香蕉久久久久久久av网站| 亚洲女同精品视频| 欧美诱惑福利视频| 欧美另类变人与禽xxxxx| 久久婷婷成人综合色| 久久一区视频| 欧美日韩国产精品成人| 国产精品xxxxx| 久久躁日日躁aaaaxxxx| 亚洲美女黄色片| 欧美四级伦理在线| 一区二区在线免费观看| 香蕉久久夜色精品国产使用方法| 一本久久综合亚洲鲁鲁| 亚洲丶国产丶欧美一区二区三区| 欧美一区二区| 国产婷婷精品| 欧美一区二区啪啪| 日韩视频国产视频| 久久精品成人一区二区三区蜜臀| 黄网站色欧美视频| 国产精品劲爆视频| 99re这里只有精品6| 欧美极品在线视频| 欧美日韩在线一二三| 亚洲国产一区二区三区在线播| 黑人巨大精品欧美黑白配亚洲| 精品不卡一区二区三区| 国外成人在线视频| 国产精品一区二区三区四区五区| 欧美在线观看视频一区二区三区| 欧美制服丝袜| 亚洲精品一区二区三区在线观看| 亚洲欧洲久久| 你懂的国产精品| 亚洲欧美日本国产有色| 韩国成人福利片在线播放| 国产综合激情| 日韩一级黄色片| 欧美日韩精品欧美日韩精品一| 久久国产日本精品| 欧美三级视频在线观看| 欧美人与性禽动交情品| 国产伦精品一区二区三区在线观看| 亚洲欧美清纯在线制服| 欧美福利视频网站| 国产精品视频免费一区| 欧美国产综合视频| 亚洲日本va在线观看| 欧美专区在线播放| 欧美大秀在线观看| 久久精品一区四区| 欧美顶级少妇做爰| 国产精品视频自拍| 国产精品中文字幕在线观看| 亚洲国产精品成人精品| 亚洲一区二区在线观看视频| 欧美在线高清视频| 国产日韩一区二区| 亚洲区一区二区三区| 欧美日产在线观看| 蜜桃精品久久久久久久免费影院| av成人老司机| 久久都是精品| 欧美日韩在线一二三| 国内一区二区三区在线视频| 欧美国产丝袜视频| 国产一区二区三区四区在线观看| 欧美国产亚洲精品久久久8v| 亚洲欧美激情精品一区二区| 久久久久9999亚洲精品| 一区二区不卡在线视频 午夜欧美不卡'| 国产日韩欧美高清免费| 久久人人97超碰国产公开结果|