C++排序及查找

1、冒泡排序法

#include <iostream>
#define N 6	//数组元素个数
using namespace std;
void bubble_sort(int a[],int n)	//冒泡排序法
{
	int i,j,t;
	for(i=1;i<n;i++)
		for(j=0;j<n-i;j++)
		if(a[j]>a[j+1])
		{
			t=a[j];a[j]=a[j+1];a[j+1]=t;
		}

}
int main()
{
	int a[N],i;
	cout<<"请输入"<<N<<"个数"<<endl;
	for(i=0;i<N;i++)
		cin>>a[i];
	bubble_sort(a,N);
	cout<<"排好序的数为:"<<endl;
	for(i=0;i<N;i++)
		cout<<a[i]<<'\t';
	cout<<endl;
	return 0;
}

2、选择排序法

#include <iostream>
#define N 6
using namespace std;
void select_sort(int a[],int n)
{
	int i,j,p,t;
	for(i=0;i<n-1;i++)
	{
		p=i;
		for(j=i+1;j<n;j++)
			if(a[j]<a[p])
				p=j;
		if(p!=i)
		{
			t=a[p];a[p]=a[i];a[i]=t;
		}
	}
}
int main()
{
	int a[N],i;
	cout<<"请输入"<<N<<"个数"<<endl;
	for(i=0;i<N;i++)
		cin>>a[i];
	select_sort(a,N);
	cout<<"排好序的数为:"<<endl;
	for(i=0;i<N;i++)
		cout<<a[i]<<'\t';
	cout<<endl;
	return 0;
}

3、顺序查找法

#include <iostream>
#define N 10
using namespace std;
int search(int a[],int n,int find)
{
	int i;
	for(i=0;i<n;i++)
		if(find==a[i])
			return i;
	return -1;
}
int main()
{
	int A[N]={18,-3,-12,34,101,211,12,90,77,45},i,find;
	cout<<"请输入要查找的元素:";
	cin>>find;
	i=search(A,N,find);
	if(i>=0) cout<<"A["<<i<<"]="<<find<<endl;
	else cout<<"not found"<<endl;
	return 0;
}

4、折半查找法

#include <iostream>
using namespace std;
int BinarySearch(int A[],int n,int find)
{
	int low,upper,mid;
	low=0,upper=n-1;
	while(low<=upper)
	{
		mid=low+(upper-low)/2;	//不用(upper+low)/2,避免upper+low溢出
		if(A[mid]<find) low=mid+1;
		else if(A[mid]>find) upper=mid-1;
		else return mid;
	}
	return -1;
}
#define N 10
int main()
{
	int A[N]={8,24,30,47,62,68,83,90,92,95},i,find;
	cout<<"请输入要查找的元素:";
	cin>>find;
	i=BinarySearch(A,N,find);
	if(i>=0)
		cout<<"A["<<i<<"]="<<find<<endl;
	else cout<<"not found"<<endl;
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_42482896/article/details/81143744