写一个函数模拟sortrows,函数输出参数B为2维排序结果数组,函数输入参数A为2维待排序数组,输入参数KEYS为排序关键字列号行向量(例如KEYS=[2,3,4]指数组A的第2列为第1排序关键字,第3列为第2排序关键字,第4列为第3排序关键字),所有关键字均采用升序排列。要求不使用函数sortrows。
时间: 2023-06-13 12:08:11 浏览: 45
以下是一个基于冒泡排序的函数实现:
```matlab
function B = mysortrows(A, KEYS)
[m, n] = size(A);
B = A;
for i = 1:m-1
for j = 1:m-i
cmp = 0;
for k = 1:length(KEYS)
col = KEYS(k);
if B(j, col) > B(j+1, col)
cmp = 1;
break;
elseif B(j, col) < B(j+1, col)
break;
end
end
if cmp
temp = B(j, :);
B(j, :) = B(j+1, :);
B(j+1, :) = temp;
end
end
end
end
```
函数首先将待排序数组A拷贝一份到B中,然后使用冒泡排序的方式进行排序。在排序过程中,对于相邻的两行A(j,:)和A(j+1,:),将它们按照关键字列号行向量KEYS所指定的列进行比较,如果A(j,:)在这些列上的值大于A(j+1,:)在相应列上的值,则交换这两行。最终得到的B即为排序结果数组。
相关推荐
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)