User:北辰.不易

Any valuable knowledge that I have learned is derived from self-study. -- Charles Robert Darwin 我所学到的任何有价值的知识都是由自学中得来的 -- 达尔文 比如对于这样一个数组 {4,9,15,21,28,30,30,42,51,62}，要把下标为4的元素（第5个元素）删除 首先我们要明确，数组的长度是10，删除的元素下标是4，区分下标和序号，下标比序号少1，比如下标是4的元素，他的序号是5，在数组中应该是第5个元素.

下标	0	1	2	3	4	5	6	7	8	9 值	4	9	15	21	28	30	30	42	51	62 第一步，将下标为5（6号）元素给下标为4的元素 下标	0	1	2	3	4	5	6	7	8	9 值	4	9	15	21	30	30	30	42	51	62 第二步，将下标为6（7号）元素给下标为5的元素 下标	0	1	2	3	4	5	6	7	8	9 值	4	9	15	21	30	30	30	42	51	62 第三步，将下标为7（8号）元素给下标为6的元素 下标	0	1	2	3	4	5	6	7	8	9 值	4	9	15	21	30	30	42	42	51	62 第四步，将下标为8（9号）元素给下标为7的元素 下标	0	1	2	3	4	5	6	7	8	9 值	4	9	15	21	30	30	42	51	51	62 第五步，将下标为9（10号）元素给下标为8的元素 下标	0	1	2	3	4	5	6	7	8	9 值	4	9	15	21	30	30	42	51	62	62 到此为止，数组元素的删除完毕（本质是移动覆盖），但别忘了长度要减1. 长度是9，也就是说这个数组中对我们有用的元素是0-8这9个元素. 第10个元素虽然在原来位置保留着，是已经丢弃的数据---没用了. 还要总结出移动结束的条件是当前位置是“长度-2”时移动结束. 我们也可以总结成下表 下标	0	1	2	3	4	5	6	7	8	9 值	4	9	15	21	28	30	30	42	51	62

从左到右移动 明白这个原理后，我人再慢慢写代码，看在程序中是如何实现的，把思维过程转化成代码，也不是一件简单的事，需要反复练习才行，想信有很多同学看过算法和数据结构一类的书，很多书上只说思想，没有给我代码，对于初学者仍然写不出程序. 同理我们画出插入元素的图表 已知：数组{4,9,15,28,30,30,42,51,62}，需在下标为3的（第4个）元素之前插入一个元素“21”. 则需要将第9个位置到第4个位置的元素依次后移一个位置，然后将“21”插入到第4个位置， 同理你可以分析一下有序数组的合并算法.