陣列排序同時返回元素在原陣列中的位置

2021-07-06 05:21:38 字數 412 閱讀 8246

對陣列中的元素進行排序是非常基礎的問題,從現有的眾多排序演算法中任選一種即可實現。但是如果要求排序後同時返回新的(有序)陣列中每個元素在舊的(未排序)陣列中之原始位置,問題可能就變得有些棘手了。

例如假設有乙個陣列如下:

[2, 30, 1, 5, 12, 8, 6]

排序(從小到大)後可得新的陣列如下:

[1, 2, 5, 6, 8, 12, 30

]那麼對於新陣列中值等於1的元素而言,其在原陣列中的位置就應該是2(注意陣列下標從0開始計數)。

當然,最straightforward的想法就是回到原陣列中去search,從而獲得元素在其中的位置。但這樣做的代價顯然有點高,比較對每個元素都做一次搜尋還是相當浪費的。從執行時間複雜度來看,有沒有更好的辦法呢?所以更常被使用的方法是使用乙個結構體陣列,例如下面這種形式:

陣列排序,返回陣列值在原陣列中的下標(序號)

功能 對輸入的陣列進行排序,返回的是,從小到大陣列對應於原陣列的下標 序號 比如 1 7 3 2 9 返回 0 3 2 1 4 思想 在函式中動態開闢乙個陣列,用於儲存下標。初始化的時候為0 n 1 陣列值在排序的過程中,下標值也跟著排序。最後返回指向下標陣列的指標。include include ...

在排序陣列中查詢元素

34.在排序陣列中查詢元素的第乙個和最後乙個位置。給定乙個按照公升序排列的整數陣列 nums,和乙個目標值 target。找出給定目標值在陣列中的開始位置和結束位置。你的演算法時間複雜度必須是 o log n 級別。如果陣列中不存在目標值,返回 1,1 include include include...

移除陣列中的元素(操作原陣列)

題目 移除陣列 arr 中的所有值與 item 相等的元素,直接在給定的 arr 陣列上進行操作,並將結果返回 輸入 1,2,3,4,2 2 輸出 1,3,4 使用splice 刪除與item相同的值並把陣列索引回退乙個值 i function removewithoutcopy arr,item ...