careercup 排序和查詢 11 1

2021-09-06 20:08:37 字數 604 閱讀 5406

11.1 給定兩個排序後的陣列a和b,其中a的末端有足夠的緩衝空間容納b。編寫乙個方法,將b合併入a並排序。

解法:已知陣列a末端有足夠的緩衝,不需要再分配額外空間。程式的處理邏輯很簡單,就是逐一比較a和b中的元素,並順序插入陣列,直至耗盡a和b中的所有元素。這麼做的唯一問題是,如果將元素插入陣列a的前端,就必須將原來的元素往後移動,以騰出空間。更好的做法是將元素插入陣列a的末端,那裡都是空閒的可用空間。

下面的**就是實現了上述做法,從陣列a和b的末端元素開始,將最大的元素放到陣列a的末端。

c++實現**:

#includeusing

namespace

std;

void merge(int a,int b,int lasta,int

lastb)

else

}while(j>=0

)

}int

main()

;

int b[7]=;

merge(a,b,

5,7);

for(auto t:a)

cout

<'';

cout

<}

careercup 排序和查詢 11 7

11.7 有個馬戲團正在設計疊羅漢的表演節目,乙個人要站在另一人的肩膀上。處於實際和美觀的考慮,在上面的人要比下面的人矮一點 輕一點。已知馬戲團每個人的高度和重量,請編寫 計算疊羅漢最多能疊幾個人。如果要保持相對順序不變,那麼不能直接排序。c 實現 include include using nam...

(十二)查詢和排序 1 查詢

在 pig latin 乙個模組化開發的案例研究 小節的piglatin.c中,函式findfirstvowel的功能,是在乙個字串中查詢第乙個母音字母。函式實現為 static intfindfirstvowel string word return 1 該實現採用簡單直接的演算法來解決查詢問題,...

careercup 遞迴和動態規劃 9 1

9.1 有個小孩正在上樓梯,樓梯有n階台階,小孩一次可以上1階 2階或3階。實現乙個方法,計算小孩有多少種上樓梯的方法。解法 我們可以採用自上而下的方式來解決這個問題。小孩上樓梯的最後一步,也就是抵達第n階的那一步,可能走1階 2階或3階。也就是說,最後一步可能是從第n 1階往上走1階 從n 2階往...