2021-11-07 数组算法

设任意n个整数存放于数组A中,试编写算法,在数组A中将所有正数排在所有负数前面(以元素交换为基本操作,要求该算法的时间复杂度为0(n))

【运行结果如下】

【代码如下】

#include<stdio.h>
typedef void Status;

/*初始化数组*/
Status InitArray(int ch[],int len) 
{
	int i;
	for (i = 0; i < len; i++) 
		scanf("%d",&ch[i]);	
}

/*输出*/
Status Output(int ch[],int len)
{
	int i;
	for (i = 0; i < len; i++)
		printf("%d ",ch[i]);
}

/*排序*/ 
Status Sort(int ch[],int len)
{
	int i = 0;
	int j = len - 1;	//数组最后一个位置
	int temp;
	while (i != j){		//当i和j相遇时,结束循环
		if (ch[i] > 0)
			 i++;
		else{
			temp = ch[i];	
			ch[i] = ch[j];
			ch[j] = temp;
			j--;
		}	
	}//while
	Output(ch,len);
}

/*排序
Status Sort(int ch[],int len)
{
	int str[20];
	int i;
	int m = 0;
	int n = len-1;
	for (i = 0; i<len; i++){
		if (ch[i] > 0)
			str[m++] = ch[i];	//正数放前面 
		else
			str[n--] = ch[i];	//负数放后面 
	}
	Output(str,len);
}*/ 

int main()
{	
	int ch[20];
	int len;
	scanf("%d",&len);
	InitArray(ch,len);
	Sort(ch,len);
	return 0;
} 

本文章仅供学习和参考!

欢迎交流~

Guess you like

Origin blog.csdn.net/m0_58489132/article/details/121189589