![面試排序算法總結(jié)_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/3/a447da78-39e6-40ed-859a-137a99add3b5/a447da78-39e6-40ed-859a-137a99add3b51.gif)
![面試排序算法總結(jié)_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/3/a447da78-39e6-40ed-859a-137a99add3b5/a447da78-39e6-40ed-859a-137a99add3b52.gif)
![面試排序算法總結(jié)_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/3/a447da78-39e6-40ed-859a-137a99add3b5/a447da78-39e6-40ed-859a-137a99add3b53.gif)
![面試排序算法總結(jié)_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/3/a447da78-39e6-40ed-859a-137a99add3b5/a447da78-39e6-40ed-859a-137a99add3b54.gif)
![面試排序算法總結(jié)_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/3/a447da78-39e6-40ed-859a-137a99add3b5/a447da78-39e6-40ed-859a-137a99add3b55.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、排序算法1、 插入排序:插入即表示將一個新的數(shù)據(jù)插入到一個有序數(shù)組中,并繼續(xù)保持有序。例如有一個長度為N的無序數(shù)組,進行N-1次的插入即能完成排序;第一次,數(shù)組第1個數(shù)認為是有序的數(shù)組,將數(shù)組第二個元素插入僅有1個有序的數(shù)組中;第二次,數(shù)組前兩個元素組成有序的數(shù)組,將數(shù)組第三個元素插入由兩個元素構(gòu)成的有序數(shù)組中.第N-1次,數(shù)組前N-1個元素組成有序的數(shù)組,將數(shù)組的第N個元素插入由N-1個元素構(gòu)成的有序數(shù)組中,則完成了整個插入排序。以下面5個無序的數(shù)據(jù)為例:65 27 59 64 58 (文中僅細化了第四次插入過程)第1次插入: 27 65 59 64 58第2次插入: 27 59
2、65 64 58第3次插入: 27 59 64 65 58第4次插入: 27 58 59 64 65二. 、效率分析穩(wěn)定 空間復(fù)雜度O(1) 時間復(fù)雜度O(n2) 最差情況:反序,需要移動n*(n-1)/2個元素 最好情況:正序,不需要移動元素數(shù)組在已排序或者是“近似排序”時,插入排序效率的最好情況運行時間為O(n);插入排序最壞情況運行時間和平均情況運行時間都為O(n2)。通常,插入排序呈現(xiàn)出二次排序算法中的最佳性能。對于具有較少元素(如n<=15)的列表來說,二次算法十分有效。在列表已被排序時,插入排序是線性算法O(n)。在列表“近似排序”時,
3、插入排序仍然是線性算法。在列表的許多元素已位于正確的位置上時,就會出現(xiàn)“近似排序”的條件。通過使用O(nlog2n)效率的算法(如快速排序)對數(shù)組進行部分排序,然后再進行選擇排序,某些高級的排序算法就是這樣實現(xiàn)的。三. 算法實現(xiàn)從前向后查找的插入排序:cpp view plain copy1. /* 2. *函數(shù)名稱:InsertSort 3. *參數(shù)說明:pDataArray 無序數(shù)組; 4. * iDataNum為
4、無序數(shù)據(jù)個數(shù) 5. *說明: 插入排序 6. */ 7. void InsertSort(int* pDataArray, int iDataNum) 8. 9. for (int i = 1; i < iDataNum; i+) /從第2個數(shù)據(jù)
5、開始插入 10. 11. int j = 0; 12. while (j < i && pDataArrayj <= pDataArrayi)
6、; /尋找插入的位置 13. j+; 14. 15. if (j < i) /i位置之前,有
7、比pDataArrayi大的數(shù),則進行挪動和插入 16. 17. int k = i; 18. int te
8、mp = pDataArrayi; 19. while (k > j) /挪動位置 20. 21.
9、60; pDataArrayk = pDataArrayk-1; 22. k-; 23.
10、160; 24. pDataArrayk = temp; /插入 25. 26. 27. 但樓主發(fā)現(xiàn)從后面
11、查找插入的方式,代碼復(fù)雜程度較低:cpp view plain copy1. /* 2. *函數(shù)名稱:InsertSort 3. *參數(shù)說明:pDataArray 無序數(shù)組; 4. * iDataNum為無序數(shù)據(jù)個數(shù) 5. *說明: 插入排序 6. */ 7. void InsertSort(int* pData
12、Array, int iDataNum) 8. 9. for (int i = 1; i < iDataNum; i+) /從第2個數(shù)據(jù)開始插入 10. 11. i
13、nt j = i - 1; 12. int temp = pDataArrayi; /記錄要插入的數(shù)據(jù) 13. while (j >= 0 && pDataArray
14、j > temp) /從后向前,找到比其小的數(shù)位置 14. 15. pDataArrayj+1 = pDataArrayj; /向后挪動 16.
15、0; j-; 17. 18. 19. if (j != i - 1) /存在比其小的數(shù) 20.
16、60; pDataArrayj+1 = temp; 21. 22. 2、選擇排序:比如在一個長度為N的無序數(shù)組中,在第一趟遍歷N個數(shù)據(jù),找出其中最小的數(shù)值與第一個元素交換,第二趟遍歷剩下的N-1個數(shù)據(jù),找出其中最小的數(shù)值與第二個元素交換.第N-1趟遍歷剩下的2個數(shù)據(jù),找出其中最小的數(shù)值與第N-1個元素交換,至此選擇排序完成。以下面5個無序的數(shù)
17、據(jù)為例:56 12 80 91 20(文中僅細化了第一趟的選擇過程)第1趟:12 56 80 91 20第2趟:12 20 80 91 56第3趟:12 20 56 91 80第4趟:12 20 56 80 91二. 算法分析平均時間復(fù)雜度:O(n2)空間復(fù)雜度:O(1) (用于交換和記錄索引)穩(wěn)定性:不穩(wěn)定 (比如序列【5, 5, 3】第一趟就將第一個5與3交換,導(dǎo)致第一個5挪動到第二個5后面)三. 算法實現(xiàn)cpp view plain copy1. /交換data1和data2所指向的整形 2. void DataSwap(int*
18、60;data1, int* data2) 3. 4. int temp = *data1; 5. *data1 = *data2; 6. *data2 = temp; 7. 8. 9. /* 1
19、0. *函數(shù)名稱:SelectionSort 11. *參數(shù)說明:pDataArray 無序數(shù)組; 12. * iDataNum為無序數(shù)據(jù)個數(shù) 13. *說明: 選擇排序 14. */ 15. void SelectionSort(int* pDataArray, int iDataNum) 16.
20、 17. for (int i = 0; i < iDataNum - 1; i+) /從第一個位置開始 18. 19. int index = i;
21、0; 20. for (int j = i + 1; j < iDataNum; j+) /尋找最小的數(shù)據(jù)索引 21. if (pDataArrayj
22、160;< pDataArrayindex) 22. index = j; 23. 24. if (index != i) /如果最
23、小數(shù)位置變化則交換 25. DataSwap(&pDataArrayindex, &pDataArrayi); 26. 27. 冒泡排序:依次比較相鄰的數(shù)據(jù),將小數(shù)據(jù)放在前,大數(shù)據(jù)放在后;即第一趟先比較第1個和第2個數(shù),大數(shù)在后,小數(shù)在前,再比較第2個數(shù)與第3個數(shù),大數(shù)在后,小數(shù)在前,以此
24、類推則將最大的數(shù)"滾動"到最后一個位置;第二趟則將次大的數(shù)滾動到倒數(shù)第二個位置.第n-1(n為無序數(shù)據(jù)的個數(shù))趟即能完成排序。以下面5個無序的數(shù)據(jù)為例:40 8 15 18 12 (文中僅細化了第一趟的比較過程)第1趟: 8 15 18 12 40第2趟: 8 15 12 18 40第3趟: 8 12 15 18 40第4趟: 8 12 15 18 40二. 算法分析平均時間復(fù)雜度:O(n2)空間復(fù)雜度:O(1) (用于交換)穩(wěn)定性:穩(wěn)定三. 算法實現(xiàn)cpp view plain copy1. /交換data1和data2所指向的整形
25、0; 2. void DataSwap(int* data1, int* data2) 3. 4. int temp = *data1; 5. *data1 = *data2; 6. *data2 = temp; 7.
26、160; 8. 9. /* 10. *函數(shù)名稱:BubbleSort 11. *參數(shù)說明:pDataArray 無序數(shù)組; 12. * iDataNum為無序數(shù)據(jù)個數(shù) 13. *說明: 冒泡排序 14. */ 15. void BubbleSort(int* pDataArray, int
27、 iDataNum) 16. 17. for (int i = 0; i < iDataNum - 1; i+) /走iDataNum-1趟 18. for (int j = 0; j
28、160;< iDataNum - i - 1; j+) 19. if (pDataArrayj > pDataArrayj + 1) 20.
29、160; DataSwap(&pDataArrayj, &pDataArrayj + 1); 21. 四. 算法優(yōu)化還可以對冒泡排序算法進行簡單的優(yōu)化,用一個標(biāo)記來記錄在一趟的比較過程中是否存在交換,如果不存在交換則整個數(shù)組已經(jīng)有序退出排序過程,反之則繼續(xù)進行下一趟的比較。cpp view plain copy1. /* 2. *函數(shù)名稱:BubbleSort 3. *參數(shù)說明:pD
30、ataArray 無序數(shù)組; 4. * iDataNum為無序數(shù)據(jù)個數(shù) 5. *說明: 冒泡排序 6. */ 7. void BubbleSort(int* pDataArray, int iDataNum) 8. 9. BOOL
31、;flag = FALSE; /記錄是否存在交換 10. for (int i = 0; i < iDataNum - 1; i+) /走iDataNum-1趟 11. 12.
32、160; flag = FALSE; 13. for (int j = 0; j < iDataNum - i - 1; j+) 14.
33、; if (pDataArrayj > pDataArrayj + 1) 15. 16. flag
34、60;= TRUE; 17. DataSwap(&pDataArrayj, &pDataArrayj + 1); 18. 19.
35、; 20. if (!flag) /上一趟比較中不存在交換,則退出排序 21. break; 22.
36、160; 23. 快速排序由于排序效率在同為O(N*logN)的幾種排序方法中效率較高,因此經(jīng)常被采 用,再加上快速排序思想-分治法也確實實用,因此很多軟件公司的筆試面試,包括像騰訊,微軟等知名IT公司都喜歡考這個,還有大大小的程序方面的考 試如軟考,考研中也常常出現(xiàn)快速排序的身影??偟恼f來,要直接默寫出快速排序還是有一定難度的,因為本人就自己的理解對快速排序作了下白話解釋,希望對大家理解有幫助,達到快速排序,快速搞定。 快速排序是C.R.A.Hoare于1962年提出的一種劃分交換排序。它采用了一種分治的策略,通常稱其為分治法(Divide-and
37、-ConquerMethod)。該方法的基本思想是:1先從數(shù)列中取出一個數(shù)作為基準(zhǔn)數(shù)。2分區(qū)過程,將比這個數(shù)大的數(shù)全放到它的右邊,小于或等于它的數(shù)全放到它的左邊。3再對左右區(qū)間重復(fù)第二步,直到各區(qū)間只有一個數(shù)。 雖然快速排序稱為分治法,但分治法這三個字顯然無法很好的概括快速排序的全部步驟。因此我的對快速排序作了進一步的說明:挖坑填數(shù)+分治法:先來看實例吧,定義下面再給出(最好能用自己的話來總結(jié)定義,這樣對實現(xiàn)代碼會有幫助)。 以一個數(shù)組作為示例,取區(qū)間第一個數(shù)為基準(zhǔn)數(shù)。01234567897265788604283734885初始時,i = 0; j = 9;&
38、#160; X = ai = 72由于已經(jīng)將a0中的數(shù)保存到X中,可以理解成在數(shù)組a0上挖了個坑,可以將其它數(shù)據(jù)填充到這來。從 j開始向前找一個比X小或等于X的數(shù)。當(dāng)j=8,符合條件,將a8挖出再填到上一個坑a0中。a0=a8; i+; 這樣一個坑a0就被搞定了,但又形成了一個新坑a8,這怎么辦了?簡單,再找數(shù)字來填a8這個坑。這次從i開始向后找一個大于X的數(shù),當(dāng) i=3,符合條件,將a3挖出再填到上一個坑中a8=a3; j-; 數(shù)組變?yōu)椋?1234567894865788604283738885 i = 3; j = 7;
39、 X=72再重復(fù)上面的步驟,先從后向前找,再從前向后找。從j開始向前找,當(dāng)j=5,符合條件,將a5挖出填到上一個坑中,a3 = a5; i+;從i開始向后找,當(dāng)i=5時,由于i=j退出。此時,i = j = 5,而a5剛好又是上次挖的坑,因此將X填入a5。 數(shù)組變?yōu)椋?1234567894865742607283738885可以看出a5前面的數(shù)字都小于它,a5后面的數(shù)字都大于它。因此再對a04和a69這二個子區(qū)間重復(fù)上述步驟就可以了。 對挖坑填數(shù)進行總結(jié)1i =L; j = R; 將基準(zhǔn)數(shù)挖出形成第一個坑ai。2j-由后向前找比它小的數(shù),找
40、到后挖出此數(shù)填前一個坑ai中。3i+由前向后找比它大的數(shù),找到后也挖出此數(shù)填到前一個坑aj中。4再重復(fù)執(zhí)行2,3二步,直到i=j,將基準(zhǔn)數(shù)填入ai中。照著這個總結(jié)很容易實現(xiàn)挖坑填數(shù)的代碼:cpp view plain copy1. int AdjustArray(int s, int l, int r) /返回調(diào)整后基準(zhǔn)數(shù)的位置 2. 3. int i = l, j = r
41、; 4. int x = sl; /sl即si就是第一個坑 5. while (i < j) 6. 7. / 從右向左找小于x的數(shù)來填si 8.
42、160; while(i < j && sj >= x) 9. j-; 10. if(i < j
43、) 11. 12. si = sj; /將sj填到si中,sj就形成了一個新的坑 13. i+;
44、; 14. 15. 16. / 從左向右找大于或等于x的數(shù)來填sj 17. while(i < j && si < x) &
45、#160;18. i+; 19. if(i < j) 20. 21.
46、160; sj = si; /將si填到sj中,si就形成了一個新的坑 22. j-; 23. 24. 25.
47、0; /退出時,i等于j。將x填到這個坑中。 26. si = x; 27. 28. return i; 29. 再寫分治法的代碼:cpp view plain copy1. void quick_sort1(int s, int l, int r)
48、160;2. 3. if (l < r) 4. 5. int i = AdjustArray(s, l, r);/先成挖坑填數(shù)法調(diào)整s 6.
49、160;quick_sort1(s, l, i - 1); / 遞歸調(diào)用 7. quick_sort1(s, i + 1, r); 8. 9. 這樣的代碼顯然不夠簡潔,對其組合整理下:cpp view plain copy1. /快速排序 &
50、#160;2. void quick_sort(int s, int l, int r) 3. 4. if (l < r) 5. 6. /Swap(sl, s(l + r) /
51、160;2); /將中間的這個數(shù)和第一個數(shù)交換 參見注1 7. int i = l, j = r, x = sl; 8. while (i < j) 9.
52、160; 10. while(i < j && sj >= x) / 從右向左找第一個小于x的數(shù) 11.
53、60; j-; 12. if(i < j) 13. si+ = sj; 14. &
54、#160; 15. while(i < j && si < x) / 從左向右找第一個大于等于x的數(shù) 16. &
55、#160; i+; 17. if(i < j) 18.
56、0; sj- = si; 19. 20. si = x; 21. quick_sort(s, l, i - 1); / 遞歸調(diào)用
57、60; 22. quick_sort(s, i + 1, r); 23. 24. 快速排序還有很多改進版本,如隨機選擇基準(zhǔn)數(shù),區(qū)間內(nèi)數(shù)據(jù)較少時直接用另的方法排序以減小遞歸深度。有興趣的筒子可以再深入的研究下。隨機選取基準(zhǔn)引入的原因:在待排序列是部分有序時,固定選取樞軸使快排效率底下,要緩解這種情況,就引入了隨機選取樞軸/*
58、隨機選擇樞軸的位置,區(qū)間在low和high之間*/int SelectPivotRandom(int arr,int low,int high)/產(chǎn)生樞軸的位置srand(unsigned)time(NULL);int pivotPos = rand()%(high - low) + low;/把樞軸位置的元素和low位置元素互換,此時可以和普通的快排一樣調(diào)用劃分函數(shù)swap(arrpivotPos,arrlow);return arrlow;測試數(shù)據(jù)分析::這是一種相對安全的策略。由于樞軸的位置是隨機的,那么產(chǎn)生的分割也不會總是會出現(xiàn)劣質(zhì)的分割。在整個數(shù)組數(shù)字全相等時,仍然是最壞情況,時間復(fù)
59、雜度是O(n2)。實際上,隨機化快速排序得到理論最壞情況的可能性僅為1/(2n)。所以隨機化快速排序可以對于絕大多數(shù)輸入數(shù)據(jù)達到O(nlogn)的期望時間復(fù)雜度。一位前輩做出了一個精辟的總結(jié):“隨機化快速排序可以滿足一個人一輩子的人品需求。”三數(shù)取中(median-of-three)引入的原因:雖然隨機選取樞軸時,減少出現(xiàn)不好分割的幾率,但是還是最壞情況下還是O(n2),要緩解這種情況,就引入了三數(shù)取中選取樞軸分析:最佳的劃分是將待排序的序列分成等長的子序列,最佳的狀態(tài)我們可以使用序列的中間的值,也就是第N/2個數(shù)??墒?,這很難算出來,并且會明顯減慢快速排序的速度。這樣的中值的估計可以通過隨機
60、選取三個元素并用它們的中值作為樞紐元而得到。事實上,隨機性并沒有多大的幫助,因此一般的做法是使用左端、右端和中心位置上的三個元素的中值作為樞紐元。顯然使用三數(shù)中值分割法消除了預(yù)排序輸入的不好情形,并且減少快排大約14%的比較次數(shù)舉例:待排序序列為:8 1 4 9 6 3 5 2 7 0左邊為:8,右邊為0,中間為6.我們這里取三個數(shù)排序后,中間那個數(shù)作為樞軸,則樞軸為6注意:在選取中軸值時,可以從由左中右三個中選取擴大到五個元素中或者更多元素中選取,一般的,會有(2t1)平均分區(qū)法(median-of-(2t+1),三平均分區(qū)法英文為median-of-three)。具體思想:對待排序序列中l(wèi)
61、ow、mid、high三個位置上數(shù)據(jù)進行排序,取他們中間的那個數(shù)據(jù)作為樞軸,并用0下標(biāo)元素存儲樞軸。即:采用三數(shù)取中,并用0下標(biāo)元素存儲樞軸。cpp view plain copy1. /*函數(shù)作用:取待排序序列中l(wèi)ow、mid、high三個位置上數(shù)據(jù),選取他們中間的那個數(shù)據(jù)作為樞軸*/ 2. int SelectPivotMedianOfThree(int arr,int low,int high) 3. 4. int
62、 mid = low + (high - low) >> 1);/計算數(shù)組中間的元素的下標(biāo) 5. 6. /使用三數(shù)取中法選擇樞軸 7. if (arrmid > arrhigh)/目標(biāo): arrmid <= arrhigh 8.
63、; 9. swap(arrmid,arrhigh); 10. 11. if (arrlow > arrhigh)/目標(biāo): arrlow <= arrhigh 12.
64、0; 13. swap(arrlow,arrhigh); 14. 15. if (arrmid > arrlow) /目標(biāo): arrlow >= arrmid 16.
65、0;17. swap(arrmid,arrlow); 18. 19. /此時,arrmid <= arrlow <= arrhigh 20. return arrlow; 21.
66、160; /low的位置上保存這三個位置中間的值 22. /分割時可以直接使用low位置的元素作為樞軸,而不用改變分割函數(shù)了 23. 測試數(shù)據(jù)分析:使用三數(shù)取中選擇樞軸優(yōu)勢還是很明顯的,但是還是處理不了重復(fù)數(shù)組注1, 有的書上是以中間的數(shù)作為基準(zhǔn)數(shù)的,要實現(xiàn)這個方便非常方便,直接將中間的數(shù)和第一個數(shù)進行交換就可以了。優(yōu)化1、當(dāng)待排序序列的長度分割到一定大小后,使用插入排序。原因:對于很小和部分有序的數(shù)組,快排不如插排好。當(dāng)待排序序列的長度分割到一定大小后,繼續(xù)分割的效率
67、比插入排序要差,此時可以使用插排而不是快排截止范圍:待排序序列長度N = 10,雖然在520之間任一截止范圍都有可能產(chǎn)生類似的結(jié)果,這種做法也避免了一些有害的退化情形。摘自數(shù)據(jù)結(jié)構(gòu)與算法分析Mark Allen Weiness 著cpp view plain copyif (high - low + 1 < 10) InsertSort(arr,low,high); return; /else時,正常執(zhí)行快排 測試數(shù)據(jù)分析:針對隨機數(shù)組,使用三數(shù)取中選擇樞軸+插排,效率還是可以提高一點,真是針對已排序的數(shù)組,是沒有任何用處的。因為待排序序列是已經(jīng)有序的,那么每次劃分只能使待排序序列減一。
68、此時,插排是發(fā)揮不了作用的。所以這里看不到時間的減少。另外,三數(shù)取中選擇樞軸+插排還是不能處理重復(fù)數(shù)組優(yōu)化2、在一次分割結(jié)束后,可以把與Key相等的元素聚在一起,繼續(xù)下次分割時,不用再對與key相等元素分割舉例:待排序序列 1 4 6 7 6 6 7 6 8 6三數(shù)取中選取樞軸:下標(biāo)為4的數(shù)6轉(zhuǎn)換后,待分割序列:6 4 6 7 1 6 7 6 8 6 樞軸key:6本次劃分后,未對與key元素相等處理的結(jié)果:1 4 6 6 7 6 7 6 8 6下次的兩個子序列為:1 4
69、 6 和 7 6 7 6 8 6本次劃分后,對與key元素相等處理的結(jié)果:1 4 6 6 6 6 6 7 8 7下次的兩個子序列為:1 4 和 7 8 7經(jīng)過對比,我們可以看出,在一次劃分后,把與key相等的元素聚在一起,能減少迭代次數(shù),效率會提高不少具體過程:在處理過程中,會有兩個步驟第一步,在劃分過程中,把與key相等元素放入數(shù)組的兩端第二步,劃分結(jié)束后,把與key相等的元素移到樞軸周圍舉例:待排序序列 1 4 6 7 6 6 7 6 8 6三數(shù)取中選取樞軸:下標(biāo)為4的數(shù)6轉(zhuǎn)換后,待分割序列:6 4 6 7 1 6 7
70、6 8 6 樞軸key:6第一步,在劃分過程中,把與key相等元素放入數(shù)組的兩端結(jié)果為:6 4 1 6(樞軸) 7 8 7 6 6 6此時,與6相等的元素全放入在兩端了第二步,劃分結(jié)束后,把與key相等的元素移到樞軸周圍結(jié)果為:1 4 66(樞軸) 6 6 6 7 8 7此時,與6相等的元素全移到樞軸周圍了之后,在1 4 和 7 8 7兩個子序列進行快排代碼cpp view plain copy1. void QSort
71、(int arr,int low,int high) 2. 3. int first = low; 4. int last = high; 5. 6. int left = low; 7.
72、; int right = high; 8. 9. int leftLen = 0; 10. int rightLen = 0; 11. 12. if (high - low +
73、 1 < 10) 13. 14. InsertSort(arr,low,high); 15. return; 16. 17.
74、 18. /一次分割 19. int key = SelectPivotMedianOfThree(arr,low,high);/使用三數(shù)取中法選擇樞軸 20. 21. while(low < high
75、) 22. 23. while(high > low && arrhigh >= key) 24. 25.
76、 if (arrhigh = key)/處理相等元素 26. 27. swap(arrright,arrhigh);&
77、#160; 28. right-; 29. rightLen+; 30.
78、160; 31. high-; 32. 33. arrlow = arrhigh; 34. &
79、#160; while(high > low && arrlow <= key) 35. 36. if (arrlow = k
80、ey) 37. 38. swap(arrleft,arrlow); 39.
81、 left+; 40. leftLen+; 41. 42.
82、60; low+; 43. 44. arrhigh = arrlow; 45. 46. arrlow = key; 47. 48. /一次快排結(jié)束 49. /把與樞軸key相同的元素移到樞軸最終位置周圍 50. int i&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 用維修基金維修電梯主機軸承合同
- 生態(tài)項目投資合作協(xié)議書(2篇)
- 路面磚產(chǎn)品質(zhì)量監(jiān)督抽查實施細則
- 湘教版數(shù)學(xué)八年級上冊1.1《分式的基本性質(zhì)》聽評課記錄1
- 五年級小數(shù)乘法口算練習(xí)題
- 七年級(人教版)集體備課聽評課記錄:2.2《整式的加減(3)》
- 五年級數(shù)學(xué)下冊聽評課記錄《2因數(shù)與倍數(shù)2-2、5、3的倍數(shù)的特征》(人教版2)
- 中等裝修房屋長期出租協(xié)議書范本
- 二零二五年度風(fēng)機采購合同合同履行監(jiān)督與審計
- 2025年度荒山承包經(jīng)營權(quán)租賃與生態(tài)修復(fù)合同
- 天津在津居住情況承諾書
- PHOTOSHOP教案 學(xué)習(xí)資料
- 初中數(shù)學(xué)教學(xué)“教-學(xué)-評”一體化研究
- 2012年安徽高考理綜試卷及答案-文檔
- 《游戲界面設(shè)計專題實踐》課件-知識點5:圖標(biāo)繪制準(zhǔn)備與繪制步驟
- 自動扶梯安裝過程記錄
- MOOC 材料科學(xué)基礎(chǔ)-西安交通大學(xué) 中國大學(xué)慕課答案
- 智慧供熱管理系統(tǒng)方案可行性研究報告
- 帕金森病的言語康復(fù)治療
- 中國城市居民的健康意識和生活方式調(diào)研分析報告
- 上海星巴克員工手冊
評論
0/150
提交評論