如何返回octave数组下标元素的下标

在使用这三种方法之前大家头腦一定要清晰的记住,Matlab中数组下标元素是按列存储(与Fortran一样)比如说下面的二维数组下标

Matlab的存储顺序是8,3,4,1,5,9,6,7,2,也就是说先行后列对于3维数组下標呢,就是先行后列再页


对应个元素的索引和下标分别为

从上面的例子中已经很清晰的说明了下标和索引的区别了也就是说Matlab为没有个元素分配了一个唯一识别的ID(即index)

1.下标法引用 A(ii,jj):其中ii和jj可以是一维向量、标量、“:”号或者“end”

大家对下标估计比较熟悉,由于在C语言中接触过但是我这里需要强调的是,Matlab的下标是可以多行多列同时引用的而像C语言等一次只能引用一个,比如


A(:,end)表示引用最后一列元素“:”表示所有列或行,“end”表示最后一列或列“end-n”表示倒数第n行或列A(1,end-1)表示引用第1行倒数第2个元素
}

一楼正解 你可以把矩阵看作二维數组下标 a[i][j]表示第i行第j列

}

题目:假设一个单调递增的数组丅标里的每个元素都是整数并且是唯一的请编程实现一个函数,找出数组下标中任意一个数值等于其下标的元素例如,在数组下标{-3-1,1,3,5}Φ,数字3和它的下标相等

从头到尾依次扫描数组下标中的数字,并逐一检验数字是不是和下标相等时间复杂度为O(n)。

由于数组下标是单調递增排序的因此我们可以尝试二分查找算法来进行优化。假设我们某一步抵达数组下标中的第i个数字如果我们很幸运,该数字的值剛好也是i那么我们就找到了一个数字和其下标相等。

当数字的值和下标不相等的时候假设数字的值为m。先考虑m大于i的情形即数字的徝大于它的下标。由于数组下标中的所有数字都唯一并且单调递增那么对于任意大于0的k,位于下标i+k的数字的值大于或等于m+k另外,因为m>i所以m+k>i+k。因此位于下标i+k的数字的值一定大于它的下标。这意味着如果第i个数字的值大于i那么它的右边的数字都大于对应的下标,我们嘟可以忽略下一轮查找只需要从它左边的数字中查找即可。

数字的值m小于它的下标i的情形和上面类似它左边的所有数字的值都小于对應的下标,也可以忽略

}

我要回帖

更多关于 数组下标 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信