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;
}