網站首頁 編程語言 正文
一、楊氏矩陣是什么
一個數字矩陣,矩陣的每一行從左到右一次遞增,矩陣從上到下遞增,在這樣的矩陣中查找一個數字是否存在。時間復雜度小于O(N)。
二、編寫步驟
1.首先給出一個三乘三的矩陣,我們想找到數字7是否在這個數組之中,如圖所示。
2. 我們給出的方法是一種從右上角開始,另一種是從左下角開始。比如從右上角開始,編寫一個函數。
3. 函數的編寫。從右上角開始,將右上角數字與數字7比較,如果數字7大于右上角的數字(3)(因為第一行最大的數字是右上角的數字(3),可以確定所判斷的數字不在第一行),那么排除第一行,且行數加一繼續判斷右上角數字與數字7的大小;如果數字7小于右上角的數字(3),那么排除第一列,且列數減一繼續判斷。至到判斷到數字與7相等,返回1;否則判斷到左下角數字,未能與數字7相等,返回0。
4. 函數的返回類型是int,返回1或者0,判斷如果為1,證明數組矩陣存在數字7,反之沒有。
1.代碼的編寫
int FindNum(int arr[3][3],int k,int row,int col)
{
int x = 0;
int y = col-1;
while(x<=row&&y>=0)
{
if(arr[x][y]<k)
{
x++;
}
else if(arr[x][y]>k)
{
y--;
}
else
//找到了;
return 1;
}
//找不到
return 0;
}
int main()
{
int arr[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int k = 7;
int ret = FindNum(arr,k,3,3);
if(ret ==1)
{
printf("找到了\n");
}
else
printf("找不到\n");
return 0;
}
2.運行結果
三、程序的改進
在數組矩陣中,如果能找到相應的數字如7,那么在基礎之上輸出數字的下標。
1.代碼的編寫
int FindNum(int arr[3][3],int k,int* px,int* py)
{
int x = 0;
int y = *py-1;
while(x<=*py&&y>=0)
{
if(arr[x][y]<k)
{
x++;
}
else if(arr[x][y]>k)
{
y--;
}
else
{//找到了;
*px = x;
*py = y;
return 1;
}
}
//找不到
return 0;
}
int main()
{
int arr[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int k = 7;
int x = 3;
int y = 3;
//返回型參數
int ret = FindNum(arr,k,&x,&y);
if(ret ==1)
{
printf("找到了\n");
printf("下標是:%d,%d\n",x,y);
}
else
printf("找不到\n");
return 0;
}``
2.運行結果
四、總結
楊氏矩陣。是對組合表示理論和舒伯特演算很有用的工具。它提供了一種方便的方式來描述對稱和一般線性群的群表示,并研究它們的性質。楊氏矩陣是劍橋大學大學數學家阿爾弗雷德·揚在1900年提出。
楊氏矩陣百科
原文鏈接:https://blog.csdn.net/weixin_49326024/article/details/122771183
相關推薦
- 2022-09-22 vite alias配置路徑地址別名
- 2022-11-23 解決vant組件van-list 首屏加載兩次的情況
- 2022-12-06 詳解Python的整數是如何實現的_python
- 2022-03-16 ASP.NET?Core在Linux下為dotnet創建守護進程_基礎應用
- 2021-12-11 Linux環境下查看日志文件命令詳解_Linux
- 2022-10-11 React - 當輸入框獲取焦點時自動選中輸入框中的內容
- 2022-06-29 python人工智能tensorflow構建卷積神經網絡CNN_python
- 2022-09-15 圖文詳解在Anaconda安裝Pytorch的詳細步驟_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支