⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 是一个用C++编写的小程序它可以进行归并排序和二分查找
💻 CPP
字号:
# include "iostream.h"
# include "stdlib.h"
void search(int *a,int j)
{
	int s,m,l,h;
	l=1;
	h=j;
	cout<<"输入你要用二分查找的数;";
	cin>>s;
	do
	{
		m=(l+h)/2;
		if(s==a[m])
		{
			cout<<"the result's number is:"<<m<<endl;
			exit(0);
		}
			else if(s>a[m])
			    l=m+1;
		      else h=m-1;
	}while(l<=h);
	cout<<"There is no result you want."<<endl;
}
void exchange(int &a,int &b)
{
	int m;
	m=a;
	a=b;
	b=m;
}
int partition(int *a,int p,int r)
{
	int j;
	int x=a[r];
	int i=p-1;
	for(j=p;j<=r-1;j++)
	{
		if(a[j]<=x)
		{
	     i=i+1;
		 exchange(a[i],a[j]);
		}
	}
	exchange(a[i+1],a[r]);
	return i+1;
}
void quicksort(int *a,int p,int r)
{
	int q;
	if(p<r)
	{
		q=partition(a,p,r);
	    quicksort(a,p,q-1);
	    quicksort(a,q+1,r);
	}
}
void merge(int *a,int p,int q,int r)
{
	int k,i,j;
	int n1=q-p+1;
	int n2=r-q;
	int *L=new int[n1+2];
	int *R=new int[n2+2];
	for(i=1;i<=n1;i++)
		L[i]=a[p+i-1];
	for(j=1;j<=n2;j++)
		R[j]=a[q+j];
	L[n1+1]=6536;
	R[n2+1]=6536;
	i=j=1;
	for(k=p;k<=r;k++)
	{
		if(L[i]<R[j])
		{
			a[k]=L[i];
			i=i+1;
		}
		else {
			a[k]=R[j];
			j=j+1;
		}
	}
	delete L;
	delete R;
}
void mergesort(int *a,int p, int r)
{
	int q;
	if(p<r)
	{
		q=(p+r)/2;
		mergesort(a,p,q);
		mergesort(a,q+1,r);
		merge(a,p,q,r);
	}
}
void main()
{
	int i,j;
	cout<<"请输入你要输入数组的个数:";
	cin>>j;
	int *a=new int[j+1];
	a[0]=0;
	cout<<"请输入你要排序的数组:"<<endl;
	for(i=1;i<=j;i++)
		cin>>a[i];
	mergesort(a,1,j);
		for(i=1;i<j+1;i++)
		cout<<a[i]<<",";
		cout<<endl;
	search(a,j);
	delete a;
}

⌨️ 快捷键说明

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