演算法分析與實踐4

2021-10-04 08:02:53 字數 545 閱讀 1763

1.問題

[描述演算法問題,首選形式化方式(數學語言),其次才是非形式化方式(日常語言)]

對n個不同的數構成的陣列a[1…n]進行排序,其中n=2^k

2.解析

[問題的理解和推導,可用電子版直接在此編寫,也可用紙筆推導,拍照嵌入本文件]

3.設計

[核心偽**]

void mergesort(int arr, int g, int d)//其中r表示原陣列,left是陣列的起始下標,right是陣列的結束位置下標

如果陣列不止乙個元素時

將原始陣列分為兩部分,分治

對第一部分陣列進行遞迴排序

對第二部分陣列進行遞迴排序

對分治的陣列進行遞迴合併

void merge(int arr,int g,int k,int d)

4.分析

[演算法複雜度推導]

5.原始碼

[github原始碼位址]

演算法分析與實踐 作業5

在包含有n個點的集合s中,找出距離最近的兩個點。設 p1 x1,y1 p2 x2,y2 pn xn,yn 是平面的n個點。嚴格地講,最近點對可能不止一對,此例輸出一對即可。利用分治求解 首先對所有的點按照x座標 或者y 從小到大排序 排序方法時間複雜度o nlogn o nlogn o nlogn ...

演算法分析與實踐 大作業

給定n個圓的半徑序列,將它們放到矩形框中,各圓與矩形底邊相切,求具有最小排列長度的原序列。一般而言我們會想到這種做法 但是這種只是其中一種,我們並沒有考慮完全,還有一些如 小球本來可以放到兩個大球的中間,不增加長度的 這個就類似於最短路的問題,由此我們想到了回溯演算法。開始時設a r1,r2,rn ...

演算法分析與實踐 作業13

讀後感 由於參與了我院acm實驗室的緣故,我有幸閱讀了 演算法競賽 高階指南 這本書。儘管並沒有能完全地滲透這一本書,但是還是在這本書上學習一些比較有用的演算法。演算法可以說是基礎,很多問題倘若我們使用暴力的方法去解決,複雜度甚至可以達到o n 但是當我們使用了一些演算法去優化,複雜度可以降到o n...