用 matlab 的 m 语言写一个冒泡排序算法和一个二分查找法算法和一个十进制与二十六进制相互转换算法
时间: 2023-05-26 14:04:13 浏览: 62
冒泡排序算法:
```
function sorted_arr = bubbleSort(arr)
% 冒泡排序算法,返回排序后的数组
n = length(arr);
for i = 1:n-1
for j = 1:n-i
if arr(j) > arr(j+1) % 如果前面的数大于后面的数,交换位置
temp = arr(j);
arr(j) = arr(j+1);
arr(j+1) = temp;
end
end
end
sorted_arr = arr; % 返回排序后的数组
end
```
二分查找法算法:
```
function idx = binarySearch(arr, val)
% 二分查找法算法,返回查找值在数组中的下标(从1开始),如果查找值不在数组中返回-1
n = length(arr);
left = 1;
right = n;
while left <= right
mid = floor((left+right)/2);
if arr(mid) == val
idx = mid;
return;
elseif arr(mid) > val
right = mid-1;
else
left = mid+1;
end
end
idx = -1;
end
```
十进制与二十六进制相互转换算法:
```
function hex_str = dec2hex26(dec_num)
% 十进制转二十六进制算法,返回二十六进制字符串
hex_base = ['A':'Z']; % 二十六进制的基
hex_len = length(hex_base); % 基的长度
hex_arr = []; % 存放二十六进制数位的数组
while dec_num > 0
r = mod(dec_num, hex_len); % 取余运算得到十进制数位对应的二十六进制数位
dec_num = floor(dec_num / hex_len); % 更新十进制数,继续循环
hex_arr = [hex_arr, r]; % 将得到的二十六进制数位加入数组
end
hex_str = ''; % 初始化二十六进制字符串
for i = length(hex_arr):-1:1 % 从数组的末尾开始,逆序取出
hex_str = [hex_str, hex_base(hex_arr(i))]; % 取出二十六进制数位对应的字符
end
end
function dec_num = hex262dec(hex_str)
% 二十六进制转十进制算法,返回十进制数
hex_base = ['A':'Z']; % 二十六进制的基
hex_len = length(hex_base); % 基的长度
dec_num = 0; % 初始化十进制数
for i = 1:length(hex_str)
idx = find(hex_base==hex_str(i)); % 找到该字符在基中的下标
dec_num = dec_num + idx * (hex_len^(length(hex_str)-i)); % 计算该位的十进制数值,累加到十进制数中
end
end
```