對無序陣列排序,並將某個元素插入到陣列對應位置

2021-10-10 20:12:50 字數 769 閱讀 3250

首先是對無序陣列的排序實現

假設陣列oldarray中儲存的是model,並且以model的number排序,利用系統的方法:

nsarray *orderarray =

[oldarray sortedarrayusingcomparator:

^nscomparisonresult

(custommodel * _nonnull model1, custommodel *_nonnull model2)

];

這樣我們得到了有序陣列orderarray,其中orderarray裡元素是通過裡邊model物件的number欄位進行公升序的。

然後我們利用二分法將newmodel插入到orderarray對應位置

插入到對應的位置,其實就是要找到當前newmodel的number對應陣列中元素的index。

//二分法查詢資料對應插入的位置

-(nsinteger)indexofmodel:

(custommodel *

)model inarray:

(nsarray *

)orderarray

else

if(model.numberelse

}return min;

}

將要插入到陣列的newmodel和orderarray傳遞到方法中,返回的就是當前newmodel對應有序陣列對應的位置。

無序陣列 的特殊排序

分析 對於一般陣列的排序顯然 o n 是無法完成的。既然題目這樣要求,肯定原先的陣列有一定的規律,讓人們去尋找一種機會。例如 原始陣列 a 10,6,9,5,2,8,4,7,1,3 如果把它們從小到大排序且應該是 b 1,2,3,4,5,6,7,8,9,10 也就是說 如果我們觀察 a b 的對映關...

如何對有序陣列進行無序排列

int i new int 定義你一開始的陣列 random ab new random 定義乙個隨機數物件 int u ab.next 0,i.length 生成乙個0到陣列個數的隨機數 arraylist ii new arraylist i 把陣列複製到arraylist ii中,便於刪除。i...

無序陣列的歸併排序與合併多個有序陣列

1.什麼是歸併排序?歸併排序先把大的陣列的合併問題拆分成多個小的區間,然後兩兩進行合併。核心思想是遞迴 歸併 遞迴 把大區間拆分成無數個小區間 歸併 把兩個小區間合併成乙個大區間 解題思路 遞迴 兩個有序列表的合併 1.案例1 對無序的陣列進行歸併排序 如下 public static void m...