#include<iostream>//本次排序只针对整型数组有效
#include<stdlib.h>
using namespace std;
const DefaultSize=50;//定义数组的大小
void BubbleSort(int V[],int n)//冒泡排序算法
{
bool exchange;
int i,j;
for(i=1;i<n;i++)
{
exchange=false;//交换标志
for(j=n-1;j>=i;j--)
if(V[j-1]>V[j])
{
int temp=V[j-1];
V[j-1]=V[j];
V[j]=temp;
exchange=true;
}
if(exchange==false)
return ;//无逆序返回
}
};
void InsertSort(int L[],const int left,const int right)//直接插入排序
{//依次将元素插入到有序表中
int temp;
int i,j;
for(i=left+1;i<=right;i++)
if(L[i]<L[i-1])
{
temp=L[i];
j=i-1;
do{
L[j+1]=L[j];
j--;
}while(j>=left&&temp<L[j]);
L[j+1]=temp;
}
}
int Partition(int *L,const int low,const int high)
{
int pivotpos=low;
int pivot=L[low];
for(int i=low+1;i<=high;i++)
if(L[i]<pivot)
{
pivotpos++;
if(pivotpos!=i)
{
int T;
T=L[pivotpos];
L[pivotpos]=L[i];
L[i]=T;
}
}
L[low]=L[pivotpos];
L[pivotpos]=pivot;
return pivotpos;
} ;
void QuickSort(int *L,const int left,const int right)//快速排序
{
if(left<right)
{
int pivotpos=Partition(L,left,right);
QuickSort(L,left,pivotpos-1);
QuickSort(L,pivotpos+1,right);
}
};
void SelectSort(int L[],const int left,const int right)//直接选择排序
{
for(int i=left;i<right;i++)
{
int k=i;
for(int j=i+1;j<right;j++)
{
if(L[j]<L[k])
k=j;
}
if(k!=i)
{
int T=L[i];
L[i]=L[k];
L[k]=T;
}
}
};
void Output(int L[],int n)
{
for(int i=0;i<n;i++)
cout<<L[i]<<" ";
cout<<endl<<endl;
};
void main()
{
int choice=0;
int L[DefaultSize];
int n;//实际数组的大小
cout<<"请输入排序数的个数:"<<endl;
cin>>n;
for(int i=1;i<=n;i++)
{
cout<<"请输入第"<<i<<"个数字:";
cin>>L[i-1];
}
while(choice!=5)
{
cout<<"排序方式:"<<endl;
cout<<"1、冒泡排序;"<<endl;
cout<<"2、直接插入排序;"<<endl;
cout<<"3、快速排序;"<<endl;
cout<<"4、直接选择排序;"<<endl;
cout<<"5、退出。"<<endl;
cout<<"您的选项:";
cin>>choice;
switch(choice)
{
case 1:BubbleSort(L,n-1);Output(L,n);exit(1);
case 2:InsertSort(L,0,n-1);Output(L,n);exit(1);
case 3:QuickSort(L,0,n-1);Output(L,n);exit(1);
case 4:SelectSort(L,0,n);Output(L,n);exit(1);
}
}
}
/*四种不同的算法集合
*/
排序算法
最新推荐文章于 2023-07-05 09:31:50 发布