3.cpp

来自「数据结构中的基本问题」· C++ 代码 · 共 111 行

CPP
111
字号
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++
//加工顺序
//作者:陈健
//学号:200153090313
//院系:信息与计算科学
//platform:windows2000pro+Visual c++ 6.0
++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
#include "stdio.h"
#include "string.h"
#define MAX_LENGTH 6

int findmin(int a[],int &n)
{
	int min = 100000,temp = 0;
	
	for(int i=0;i<n;i++)
	{
		if(min>a[i] && a[i] !=-1)
		{
			min= a[i];
			temp = i;
		}
	}
	n = temp;
	
	return min;
}
bool findexist(int a[],int n,int len)
{
	bool flag = false;

	for(int i=0;i<len;i++)
	{
		if(a[i] == n)
		{
			flag = true;
			break;
		}
	}

	return flag;
}
int quickSort(int p[],int q[],int u)
{
	int array1[MAX_LENGTH],array2[MAX_LENGTH];
	int min,len,l,k,a,b;

	len = u;
	for(int i=0;i<u;i++)
	{
		min = findmin(p,len);
		array1[i] = len;
		p[len] = -1;
		len = u;

		min = findmin(q,len);
		array2[u-i-1] = len;
		q[len] = -1;
		len = u;
	}

	l=0;
	for(int j=0;j<u;j++)
	{
		a= array1[j];
		b = array2[u-j-1];
		if(findexist(p,a,u)==false)
		{
			p[l] = a;
			l++;
		}
	
		if(findexist(p,b,u)==false)
		{
			p[l] = b;
			l++;
		}
	}
	printf("the result is(the number of the thing):\n");
	for(int m=0;m<u/2;m++)
	{
		printf("%d\t",p[2*m]);
	}
	for(int e=0;e<u/2;e++)
	{
		printf("%d\t",p[u-1-2*e]);
	}
	printf("\n");
	
	return 0;
}

void main()
{
	int array1[MAX_LENGTH];
	int array2[MAX_LENGTH];

	printf("please enter times(less than %d):\n",MAX_LENGTH);
	for(int i=0;i<MAX_LENGTH;i++)
	{
		scanf("%d",&array1[i]);
	}
	printf("please enter times(less than %d):\n",MAX_LENGTH);
	for(int j=0;j<MAX_LENGTH;j++)
	{
		scanf("%d",&array2[j]);
	}

	quickSort(array1,array2,MAX_LENGTH);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?