小程序12.12

调整数组使奇数全部都位于偶数前面。 
题目: 

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


#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#define MAX 10
void swap(int a[], int n)
{
	int b[MAX] = { 0 };
	int left = 0;
	int right = MAX - 1;
	int i = 0;
	for (i = 0; i < MAX; i++)
	{
		if (a[i] % 2 == 0)
		{
			b[left] = a[i];
			left++;
		}
		else
		{
			b[right] = a[i];
			right--;
		}
	}
	for (i = 0; i < MAX; i++)
	{
		a[i] = b[i];
	}
}
int main()
{
	int a[MAX] = { 0 };
	int i = 0;
	for (i = 0; i < MAX; i++)
	{
		printf("请输入第%d个数字\n", i + 1);
		scanf("%d", &a[i]);
	}
	swap(a, MAX);
	printf("交换之后的数组为:\n");
	for (i = 0; i < MAX; i++)
	{
		printf("%d\n", a[i]);
	}
	system("pause");
}

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

1 3 4 
2 4 5 
4 5 6


#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>
#include<stdlib.h>
#define M 4//M代表二维数组的行数
#define N 4//N代表二维数组的列数


int main()
{
	int a[M][N] = { 0 };
	int m = 0;
	int n = 0;
	int i = 0;
	printf("请输入一个行列都是递增的二维数组\n");
	for (m = 0; m < M; m++)
	{
		for (n = 0; n < N; n++)
		{
			printf("请输入第%d行第%d列的元素:\n", m + 1, n + 1);
			scanf("%d", &a[m][n]);
		}
	}
	for (m = 0; m < M; m++)
	{
		for (n = 0; n < N; n++)
		{
			printf("请输入第%d行第%d列的元素为%d:\n", m + 1, n + 1,a[m][n]);
			
		}
	}
	printf("请输入您想要查找的数字:\n");
	scanf("%d", &i);
	if ((a[0][0]>i) || a[M-1][N-1] < i)
	{
		printf("该数组没有该数字\n");
		return 0;
	}
	if (a[0][0] == i)
	{
		printf("该数组存在该数字\n");
		return 0;
	}
	n = 0;
	m = 0;
	if (a[0][N-1] >= i)
	{
		for (n = N-1; n > 0; n--)
		{
			if (a[m][n] == i)
			{
				printf("该数组存在该数字\n");
				return 0;
			}
			

		}
	
		printf("该数组没有该数字\n");
		return 0;
	
	}
	
	if (a[0][N-1] < i)
	{
		m = M-1;
		for (n = 0; n < N; n++)
		{

			if (a[m][n] == i)
			{
				printf("该数组存在该数字\n");
				return 0;
			}
			
		}
	
		printf("该数组没有该数字\n");
		return 0;
	

	}
	system("pause");
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值