栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言 重新排列数组,使得负整数在前,然后是0,最后是正整数。(类似荷兰国旗)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言 重新排列数组,使得负整数在前,然后是0,最后是正整数。(类似荷兰国旗)

(1)第一种重新排列数组

//学习记录
#include
int main()
{
	int array[10]={1,4,6,-1,-4,-6,0,3,6,-5} ;
	int array1[10]={0};
	int j=0;
	for(int i=0;i<10;i++)  //需要新建数组
	{
		if(array[i]<0)
		{
			array1[j]=array[i];
			j++;
		}
	}
	for(int k=0;k<10;k++)
	{
		if(array[k]==0)
		{
			array1[j]=array[k];
			j++;
		}
	}
	for(int l=0;l<10;l++)
	{
		if(array[l]>0)
		{
			array1[j]=array[l];
			j++;
		}
	}
	for(int i=0;i<10;i++)
	{
		printf("%d ",array1[i]);		
	}
}

(2)第二种重新排列数组

#include
int main()
{
	int array[10]={1,4,6,-1,-4,-6,0,3,6,-5} ;
	int array1[10]={0};
	int p=0,q=9,temp,i=0;    //类似荷兰国旗问题
	while(p!=q)      
	{
		if(array[i]<0)
		{
			temp=array[p];
			array[p]=array[i];
			array[i]=temp;
			p++;
		}
		else if(array[i]>0)
		{
			temp=array[q];
			array[q]=array[i];
			array[i]=temp;
			q--;
		}
		i++;
	}
	for(int i=0;i<10;i++)
	{
		printf("%d ",array[i]);		
	}
	return 0;
}

(3)第二种重新排列数组,并按照大小排列同时打印每次变换。

#include
int main()
{
	int array[10]={1,4,6,-1,-4,-6,0,3,6,-5} ;
	int p=0,q=9,ch,temp;
	while(p<=q)
	{
		int ch=p;
		if(array[ch]==0)
			ch++;
		if(array[ch]<0)
		{
			temp=array[p];    //负数移到右标记处 
			array[p]=array[ch];
			array[ch]=temp;
			int P=p;
			printf("  移动        ",p,q,ch); //说明 
			for(int l=0;l<10;l++)
			{
				printf("%d ",array[l]);
			}
			printf("n");
			while(P-1>=0)              
			{
				if(array[P]0)
		{
			temp=array[q];     //正数移到右标记处 
			array[q]=array[ch];
			array[ch]=temp;
						printf("  移动        ",p,q,ch);
			for(int l=0;l<10;l++)
			{
				printf("%d ",array[l]);
			}
			printf("n");
			int Q=q;
			while(Q+1<=9)
			{
				if(array[Q]>array[Q+1])
				{
					temp=array[Q];
					array[Q]=array[Q+1];
					array[Q+1]=temp;
					printf("正数排序      ",p,q,ch);
					for(int l=0;l<10;l++)
					{
						printf("%d ",array[l]);
					}
					printf("n");
					Q++;
				}
				else break;
			}			
			q--;    //q右面的已经有序 
		}
	}
	return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/767634.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号