給定兩個排序後的陣列a和b,其中a的末端有足夠的空間容納b,編寫乙個方法將b合併到a並排序
拿到這個題後,最直接的想法就是比較a和b中的元素,並按順序插入陣列,直到遍歷完a和b中的所有元素。但是這樣做會有乙個不好的地方:如果元素的插入位置在陣列a的前端,那就必須將原來的陣列往後移動。這會增加開銷。但是我們可以使用另外的一種辦法將元素插入陣列a的末端。這樣我們不會出現元素移動的情況!**如下
/*
* lasta:a中的實際元素數 lastb:b中的實際元素數 mergeindex是新陣列的實際空間大小
*/public static void mergeorder(int a, int b, int lasta, int lastb) else
} while (indexb >= 0)
}
有趣的演算法
friday,july 22,2016 19 50 50 a b兩人分別在兩座島上。b生病了,a有b所需要的藥。c有一艘小船和乙個可以上鎖的箱子。c願意在a和b之間運東西,但東西只能放在箱子裡。只要箱子沒被上鎖,c都會偷走箱子裡的東西,不管箱子裡有什麼。如果a和b各自有一把鎖和只能開自己那把鎖的鑰匙...
幾個有趣的java問題
問題一 for int i start i start 1 i 這個 有沒有可能死迴圈呢?問題二 while i i 1 這個 有沒有可能死迴圈呢?問題三 system.out.println i i 0 這個 有沒有可能列印false呢?問題四如何讓 i i true 答案是全都有可能 問題一 當...
十分鐘了解演算法(3) 有趣的演算法
k最近鄰,就是k個最近的鄰居的意思,每個樣本都可以用它最接近的k個鄰居來代表。如果乙個樣本在特徵空間中的k個最相鄰的樣本中的大多數屬於某乙個類別,則該樣本也屬於這個類別,並具有這個類別上樣本的特性。1.特徵抽取 挑選合適的特徵 確定樣本的特徵值,建立n維座標軸 標出每個樣本的點,並使用畢達哥拉斯公式...