溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

調(diào)整數(shù)組順序使奇數(shù)位于偶數(shù)前面

發(fā)布時間:2020-07-11 18:11:56 來源:網(wǎng)絡(luò) 閱讀:196 作者:秋笙夏笛 欄目:編程語言

第一種:

開辟一個一樣大小的數(shù)組,遍歷原數(shù)組的數(shù)據(jù),把原數(shù)組奇數(shù)依次存放在新數(shù)組的前面,偶數(shù)存放在后面。

時間復(fù)雜度:O(n^2);

空間復(fù)雜度:O(n)

缺陷:效率太差

#include<stdio.h>
#include<stdlib.h>
void Adjust(int* src,int* des,int n)
{
	int index=0;
		for(int j=0;j<n;j++)
		{
			if(src[j]%2)
			{
				des[index]=src[j];
				index++;
			}
		}
		for(int j=0;j<n;j++)
		{
			if(!(src[j]%2))
			{
				des[index]=src[j];
				index++;
			}
		}
	
}
void test()
{
	int a1[10]={2,4,4,66,76,86,20,10,24,18};
	int a2[10]={1,3,5,35,15,13,17,19,17,21};
	int a3[10]={1,2,5,36,16,13,17,19,14,21};
	int a[10];
	Adjust(a3,a,sizeof(a3)/sizeof(a3[0]));
	for(int i=0;i<sizeof(a3)/sizeof(a3[0]);i++)
	{
		printf("%d ",a3[i]);
	}
	printf("\n");
	for(int i=0;i<sizeof(a)/sizeof(a[0]);i++)
	{
		printf("%d ",a[i]);
	}
}
int main()
{
	test();
	system("pause");
	return 0;
}

結(jié)果:

調(diào)整數(shù)組順序使奇數(shù)位于偶數(shù)前面

第二種:

利用兩個指針,一個指向數(shù)組開始,一個指向數(shù)組末尾,指向數(shù)組開始的那個指針依次向后遍歷,找到偶數(shù)立即停下來,指向數(shù)組末尾的那個指針向前遍歷,找到奇數(shù)停下來,判斷start<=end,,交換兩個值。

#include<stdio.h>
#include<stdlib.h>
bool Check(int num)
{
	return num%2;
}
void swap(int* a,int *b)
{
	int tmp=*a;
	*a=*b;
	*b=tmp;
}
void Adjust(int* a,int n)
{
	int start=0;
	int end=n-1;
	while(start<=end)
	{
		while(Check(a[start])&&start<=end)
		{
			start++;
		}
		while(!(Check(a[end]))&&start<=end)
		{
			end--;
		}
		if(start<end)
		{
			swap(&a[start],&a[end]);
		}
	}

}
void test()
{
	int a1[10]={2,4,4,66,76,86,20,10,24,18};
	int a2[10]={1,3,5,35,15,13,17,19,17,21};
	int a3[10]={1,2,5,36,16,13,17,19,14,21};
	Adjust(a1,sizeof(a1)/sizeof(a1[0]));
	for(int i=0;i<sizeof(a1)/sizeof(a1[0]);i++)
	{
		printf("%d ",a1[i]);
	}
	printf("\n");
	Adjust(a2,sizeof(a2)/sizeof(a2[0]));
	for(int i=0;i<sizeof(a2)/sizeof(a2[0]);i++)
	{
		printf("%d ",a2[i]);
	}
	printf("\n");
	Adjust(a3,sizeof(a3)/sizeof(a3[0]));
	for(int i=0;i<sizeof(a3)/sizeof(a3[0]);i++)
	{
		printf("%d ",a3[i]);
	}
}
int main()
{
	test();
	system("pause");
	return 0;
}

結(jié)果:

調(diào)整數(shù)組順序使奇數(shù)位于偶數(shù)前面

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI