1.调整数组使奇数全部都位于偶数前面。2. //杨氏矩阵

博客主要包含两个内容,一是调整整数数组,使奇数在前偶数在后,采用冒泡排序思想交换顺序;二是在杨氏矩阵(每行从左到右、每列从上到下递增的二维数组)中查找数字,通过定义left和right,根据与目标数字大小关系移动指针,时间复杂度小于O(N)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.调整数组使奇数全部都位于偶数前面。
题目:
输入一个整数数组,实现一个函数,
来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,
所有偶数位于数组的后半部分。

解题思想:采用冒泡排序的思想,如果奇数在前偶数在后就交换两个数。

void Sort(int num[],int len)
{
	printf("移动前:");
	for (int i = 0; i < len; i++)
	{
		printf("%d ", num[i]);
	}
	printf("\n");
	for (int i = 0; i < len - 1; ++i)
	{
		for (int j = 0; j < len - i - 1; ++j)
		{
			if (num[j] % 2 == 0 && num[j + 1] % 2 != 0)
			{
				int temp = num[j];
				num[j] = num[j + 1];
				num[j + 1] = temp;
			}
		}
	}
	printf("移动后:");
	for(int i = 0; i < len; i++)
	{
		printf("%d ", num[i]);
	}
	printf("\n");
}


2.
//杨氏矩阵
有一个二维数组.
数组的每行从左到右是递增的,每列从上到下是递增的.
在这样的数组中查找一个数字是否存在。
时间复杂度小于O(N);
数组:
1 2 3
2 3 4
3 4 5


1 3 4
2 4 5
4 5 6

1 2 3
4 5 6
7 8 9

解题思想:定义left和right如果小于目标数字就left++,如果大于目标数字就right--。

int Findnum(int arr[3][3], int key)
{
	int left = 0;
	int right = 2;
	while ((left >= 0) && (right < 3))
	{
		if (arr[left][right] < key)
		{
			left++;
		}
		else if (arr[left][right] > key)
		{
			right--;
		}
		else if (arr[left][right] == key)
		{
			return 1;
		}
	}
	return 0;
}

主函数代码块:

int main()
{
	//1.调整数组使奇数全部都位于偶数前面。
	int num[] = { 3,8,6,4,5,7,9,12,11 };
	int len = sizeof(num) / sizeof(num[0]);
	Sort(num, len);
	//2.杨氏矩阵
	int arr[3][3] = { 1,2,3,4,5,6,7,8,9 };
	int key = 0;
	printf("请输入一个数字查找:");
	scanf("%d", &key);
	int ret = Findnum(arr, key);
	if (ret == 1)
	{
		printf("TURE\n");
	}
	else if (ret == 0)
	{
		printf("FALSE\n");
	}

	system("pause");
	return 0;
}

运行结果截图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值