7 回答
TA贡献1799条经验 获得超8个赞
怎么根据sort函数得到的索引来娑杂Φ耐计matlab
给你举了例子:X=magic(5)X=17241815235714164613202210121921311182529>>[a,b]=sort(X,2)a=18151724571416234613202231012192129111825b=3451223451123455123445123结果解释:a是原来的矩阵x按照行,每行从小到大重新排列得到的新矩阵。b告诉你重排的详细信息,也就是做了什么样的变动。例如b的第一行显示34512,那么将原矩阵X的第一行的第34512个元素取出来,顺次排列,就变成a矩阵的第一行
TA贡献1864条经验 获得超2个赞
sort函数执行时,会依次循环把数组里的两个数传递给函数f,这时候f的参数a和b就分别是传入的两个数,然后分别求出a和b除以2的余数(实际上就是判断a和b是奇数还是偶数,0是偶数,1是奇数)。如果a是偶数,函数f就返回1(或其他任何大于0的数),如果a是奇数且b是偶数就返回-1(或其他任何小于0的数)。sort函数根据f的返回值来对两个数进行排序,如果是大于0的数,就把两个数的值对调,如果是0或小于0的数则不做任何处理。
这样的话,当数组中的所有元素都两两处理完毕后,最终就会形成奇数在前偶数在后的情况了
TA贡献1900条经验 获得超5个赞
排序过程其实就是按顺序取两个元素比较大小 以此作为排序标准
m n可以理解为每次从a数组中取的两个元素 差值为正 则表示a大 排序结果就是由大到小排序
换成n-m就是由小到大排序 可以这样记住(原因在于排序算法内部,我们只要知道如何用就好)
TA贡献2012条经验 获得超12个赞
函数原型:
bool sort(array &$array[,int $sort_flag])
函数作用:
对数组$array进行升序排列,排序后数组$array的键将被删除,而且值将按照从小到大的顺序重新排列。排序成功返回true,排序失败返回false.至于函数原型中的[]表示参数项可选。升序排列是指动小到大的排列方式,对于数值来说直接很好理解,对于字符或者字符串来说则是按照a-z的顺序。
函数中的两个参数,$array代表要排序的数组,前面加了运算符&,表示参数是引用传递。参数$sort_flag用于指定排序的类型。
对于以下代码:
<?php
$varSort = array("a" => "cat" , "b" => "mouse" , "c" => "dog"); //定义数组包含3个元素,均为字符串类型
sort($varSort);//对数组排序
print_r($varSort);//输出
?>
以上代码输出结果是这样的:
Array ( [0] => cat [1] => dog [2] => mouse )
因为此函数排序是从小到大的顺序排列,对于字符串就是按照a-z的顺序排列,所以得到的值的顺序分别为cat(c开头),dog(d开头),mouse(m开头)
而且此函数排序会删除原有的键值,所以排序后键值为0,1,2
TA贡献1876条经验 获得超6个赞
建议看php手册英文版的。中文版是翻译过来,一些内容可能未包罗。
1、php手册里关于sort函数的说明:
// sort_flags 默认值是SORT_REGULAR
bool sort( array&$array [, int $sort_flags = SORT_REGULAR ] )
2、升序可以这么理解,按照字符的编码来排序,或者说是按照ascii码来排序的。
- 7 回答
- 0 关注
- 564 浏览
添加回答
举报