1. 程式人生 > >程式設計練習#1

程式設計練習#1

輸入一個整數陣列,實現一個函式,  來調整該陣列中數字的順序使得陣列中所有的奇數位於陣列的前半部分,  所有偶數位於陣列的後半部分。 

兩種方法實現奇偶調序

#include<stdio.h>
void swap_num(int* arr, int len)
//方法1
//採用先遍歷一次,將所有奇數輸出,然後再把所有偶數輸出的方法實現
{
	int i = 0;
	for (; i < len; i++)
	{
		if (0 != arr[i] % 2){
			printf("%d ", arr[i]);
		}
	}
	for (i = 0; i < len; i++)
	{
		if (0 == arr[i] % 2){
			printf("%d ", arr[i]);
		}
	}
	printf("\n");
}

void swap_num2(int* arr, int len)
//方法2
//直接在陣列內部進行奇偶調換,然後用for迴圈輸出
{
	int *left = arr;//取左邊的值
	int *right = arr + len - 1;//取右邊的值
	int tmp = 0;
	while (left < right)//整體條件不能越界,始終是左邊小於右邊
	{
		while ((left < right) && (*left) % 2 != 0)//保證不越界但是先找奇數
		{
			left++;
		}
		while ((left < right) && (*right) % 2 == 0)//保證不越界但是先找到偶數
		{
			right--;
		}
		if (left < right)//將找到的奇數和偶數交換
		{
			tmp = *left;
			*left = *right;
			*right = tmp;
		}
	}
}



int main()
{
	int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
	int len = sizeof(arr) / sizeof(arr[0]);
	swap_num(arr, len);
	swap_num2(arr, len);
	int i = 0;
	for (i = 0; i < len; i++){
	    printf("%d ", arr[i]);
	}
	return 0;
}