1.调整数组使奇数全部都位于偶数前面。
题目:
输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void Change(int arr[],int len)
{
int i = 0;
int j = 0;
int temp = 0;
for(i=0; i<len; i++)
{ for(j=i+1; j<len; j++)
{ if(arr[j]%2 == 1 )
{ temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
int main()
{ int arr[] = {66,49,8,3,12,98,77,44,65,21};
int i = 0;
int sz = sizeof(arr) / sizeof(arr[0]);
Change(arr,sz);
for(i=0; i<sz; i++)
printf("%4d",arr[i]);
printf("\n");
return 0;
}
2.
//杨氏矩阵
有一个二维数组.
数组的每行从左到右是递增的,每列从上到下是递增的.
在这样的数组中查找一个数字是否存在。
时间复杂度小于O(N);
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int arr[4][4] = {{1, 2, 3, 4},{2, 3, 4, 5}, {3, 4, 5, 6},{4,5,6,7}};
int row = 0;
int col = 3;
int n = 0;
printf("请输入要查找的数字\n");
scanf("%d", &n);
while(row<4 && col>=0)
{
if(arr[row][col] == n)
{
printf("存在\n");
return 0;
}
else if (arr[row][col] > n)
{
col--;
}
else
{
row++;
}
}
if(row = 4 || col<0)
printf("不存在");
return 0;
}