简单记录下,insert, delete,reverse还有向有序数组中插入元素的算法(插入后依然有序)
1. 有序数组中插入元素
思路:主要是for循环的条件语句。
for (i = n-1; i >=0 && x <a[i] ; i--)
a[i+1] = a[i];
a[i+1] = x; //&& x <a[i] 这句使得,循环结束后的a[i] 刚刚好比 x小,
//把x 赋给 a [i +1] 项即可。
2.insert,delete ,reverse 都是LinearList 类的方法。
(1). insert
insert 与有序数组 的insert 有些相似。
for ( i = length - k ; i >= k ; i--)
element [i +1] = element [i] ; // 第一个i时, a[k+1] = a[k]
element [ k ] = x; // element [ k-1] 是第k个元素,后面的元素都已调整好。
辨析:第一个insert 用 && a[i]>x ,第二个insert 用的是int i = length - k.
第一个例子需要根据 元素大小排序,这样才可找到正确的索引 i .
第二个例子已经给定了位置,要在第k个元素后 插入 元素。
(2). delete (int k )
for (int i = k; i < length; i++)
element[ i-1] = element [i] ; // 第一个i,是a[k-1] = a[k], a[k-1]是不要的K元素。
length--;
(3) Reverse 原地重排,并reverse
- int n = this->Length();
- if (n % 2 == 0) {
- for (int i = 0; i < (n / 2); i++)
- swap(element[i], element[n - i - 1]);
- }
- else for (int i = 0; i < (n - 1) / 2; i++)
- swap(element[i], element[n - i - 1]);