如何在不對數組進行排序的情況下遞歸地獲取某個元素的索引?如何修改合併排序以僅返回元素的索引而不排序?
-2
A
回答
0
在這種情況下,蠻力搜索和遞歸搜索都具有相同的時間複雜度。但仍然,如果你想遞歸版本,那麼僞代碼將:
調用與陣列和導航鍵的功能,以search.Init數組一個靜態指標。
檢查,如果索引超出範圍的則返回-1(意味着未找到)
檢查,如果在陣列的電流元件是關鍵。 如果true返回靜態索引;
else通過遞增索引來返回函數調用。
0
這個問題可能是指找到排序列表中某個元素的排名。實際上,這個操作並不需要顯式地對數組進行排序,而只需要計算有多少元素比它小(假設按升序排序)。
對此,最好的複雜度是O(n),因爲每個元素都需要檢查。
使用非遞歸方法實現O(n)複雜性很簡單 - 只需遍歷所有元素,並在遇到較小元素時增加計數器。計數器的最終值表示有序元素在排序數組中的位置(請注意,這是在沒有明確排序的情況下獲得的)。
一個簡單的遞歸解決辦法,(使用C風格的代碼)模仿這種行爲如下所示:
getRank(int value, int* array, int nElements) {
if (nElements == 0) return 0;
if (array[0] < value)
return 1 + getRank(value, array + 1, nElements - 1);
else
return getRank(value, array + 1, nElements - 1);
}
相關問題
- 1. 修改合併排序以實現合併排序與插入排序Java
- 2. 合併排序 - 僅排序2^n個元素
- 3. 排序索引元素
- 4. 排序張量並返回排序後的索引?
- 5. 返回值如何合併排序
- 6. 修改合併排序用於存儲原始索引
- 7. JavaScript中的合併排序返回重複的元素
- 8. 使用插入排序的合併排序的修改版本
- 9. 合併排序:使用混合元素排序列表
- 10. 可排序的GET元素索引
- 11. 與合併排序相比,修改的合併排序的運行時間?
- 12. 快速排序返回未排序的中間/中值元素?
- 13. 使用合併對數組進行排序索引排序
- 14. F#從array.sort返回排序索引
- 15. 合併排序索引越界java
- 16. 搜索後不保留搜索排序,返回默認排序
- 17. 如何避免索引搜索返回的排序結果?
- 18. 如何排序pymongo複合索引
- 19. 如何將合併排序轉換爲並行合併排序
- 20. 如何讓這種合併排序按降序而不是按升序排列?
- 21. 合併排序 - 向量不排序
- 22. 合併排序不排序數組
- 23. 二元合併排序&天然合併排序
- 24. 可排序克隆元素而不是排序
- 25. 如何獲得排序後的數組元素的索引
- 26. 排序,而不比較元素
- 27. 使用jQuery修改數組以獲取排序索引
- 28. 合併數據幀而不排序值
- 29. 閱讀文件的行,排序並返回中間元素
- 30. XSLT:如何排序元素?
你想才達到什麼?只找到某個元素?也許它更好,所以搜索元素iterativ ... – gartenkralle
很難理解在你的問題中排序和在數組中找到元素之間的關係。如果你對數組進行排序,元素通常會在不同的地方,所以你不清楚你在問什麼。 –
遞歸??? –