日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C語言楊氏矩陣實例教你編寫_C 語言

作者:莫陌尛. ? 更新時間: 2023-03-29 編程語言

一、楊氏矩陣是什么

一個數字矩陣,矩陣的每一行從左到右一次遞增,矩陣從上到下遞增,在這樣的矩陣中查找一個數字是否存在。時間復雜度小于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

欄目分類
最近更新