在VS2013環境下,基礎進階中。。。(9)

以下函數均可通過main的調用實現
(需要實現哪個函數,就取消那個函數所在部分的註釋)
int main()
{
	/*int arr[3][3] = { 1, 3, 12, 5, 9, 15, 8, 13, 20 };
	int num = 0;
	scanf("%d", &num);
	if (search(arr, 3, 3, num))
	{
		printf("This number is exist!\n");
	}
	else
	{
		printf("This number isn't exist!\n");
	}*/

	/*int arr[] = {2,3,4,5,6,7,8,9,1,10,12,13};
	int size = sizeof(arr) / sizeof(arr[0]);
	adjust(arr,size);*/

	system("pause");
	return 0;
}

1. 輸入一個整型數組,實現一個函數。通過調整該數組中數字的順序使得數組中所有的奇數放在數組的前半部分,所有偶數放在數組的後半部分

void adjust(int *p, int size)
{
	int empty = 0;
	int end = size - 1;
	int i = 0;
	int j = 0;
	for (i = 0; i < end + 1; i++)
	{
		if ((p[i] % 2) == 0)
		{
			empty = p[i];
			for (j = i + 1; j < end + 1; j++)
			{
				p[j - 1] = p[j];
			}
			p[end--] = empty;
			i--;
		}
	}
}

2. 利用楊氏矩陣 (有一個二維數組,數組的每行是從左到右遞增的,每列是從上到下遞增的),通過在這樣的數組中查找一個數字是否存在。 時間複雜度小於O(N)

int search(int a[3][3], int row, int col, int value)
{
	int i = 0;
	int j = 0;
	int exist = 0;
	for (i = 0; i < row; i++)
	{
		if (a[i][row - 1] < value)
		{
			continue;
		}
		else if (a[i][row - 1] == value)
		{
			exist = 1;
			break;
		}
		else
		{
			for (j = 0; j < row - 1; j++)
			{
				if (a[i][j] == value)
				{
					exist = 1;
					break;
				}
			}
			if (j < row - 2)
			{
				break;
			}
		}
	}
	return exist;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章