Arrays 如果只有删除/插入命令,如何在数组中移动元素?
假设您有以下数组:Arrays 如果只有删除/插入命令,如何在数组中移动元素?,arrays,algorithm,cocoa,nstableview,Arrays,Algorithm,Cocoa,Nstableview,假设您有以下数组: oldArray = ['d','e','f','i','j']; 您希望将其放入这个新阵列中: newArray = ['d','j','f','i','e']; 您可能已经注意到,j和e是互换的 但要做到这一点,您必须通过使用delete-insert命令对序列来转换数组。就是 deleteInsert(array,i,j) = { delete the element at index i, move all elements in indexes
oldArray = ['d','e','f','i','j'];
您希望将其放入这个新阵列中:
newArray = ['d','j','f','i','e'];
您可能已经注意到,j
和e
是互换的
但要做到这一点,您必须通过使用delete-insert命令对序列来转换数组。就是
deleteInsert(array,i,j) = {
delete the element at index i,
move all elements in indexes after i downwards,
and finally insert the element at index j
}
你如何处理这个问题
(作为背景信息,我试图通过在表视图中移动行,使Cocoa的
NSTableView
类正确更新和设置动画)。1.保存并删除移动元素。
2.然后将所有后续元素向右移动,直到移动元素目标的索引。a、 救一个。b、 移除它。c、 将其插入到小于1的索引中。D继续,直到释放移动元素目标索引。
3.在当前可用索引中插入移动元素。要将项目
i
与项目j
交换:
i
(如果i>j
,则交换(变量值)i
和j
;如果i=j
,则返回)deleteSert(数组,j,i)
deleteSert(数组,i+1,j)
“如果您只有删除/插入命令?”这是您强加的条件吗?根据背景信息,这是
NSTableView
class的条件。