📄 直接插入冒泡选择排序算法的实现.cpp
字号:
#include<iostream.h>
#define MaxSize 10 //一个用作示例的顺序表的最大长度
typedef struct RecordType //记录类型
{
int key; //关键字项
}SqList[MaxSize]; //顺序表类型
void InsertSort(SqList r,int n)
//直接插入排序,排序元素r[1]-r[n]//
{
int i,j;
for(i=2;i<=n;i++)
{
r[0]=r[i]; //r[0]为监视哨
j=i-1;
while(r[0].key < r[j].key) //进行元素移动,以便腾出一个位置插入r[i]
{
r[j+1]=r[j]; //元素后移
j--;
}
r[j+1]=r[0]; //在j+1位置处插入r[0]
}
}
void BubbleSort(SqList r,int n)
//起泡排序(冒泡排序),n->顺序表长度//
{
int i,j;
RecordType w;
for(i=1;i<=n-1;i++)
{
for(j=n;j>=i+1;j--)
{
if(r[j].key < r[j-1].key) //比较,r[j]与r[j-1]进行交换
{
w=r[j];
r[j]=r[j-1];
r[j-1]=w;
}
}
}
}
void SelectSort(SqList r,int n)
//选择排序//
{
int i,j,k;
RecordType temp;
for(i=1;i<=n-1;i++)
{
k=i;
for(j=i+1;j<=n;j++)
{
if(r[j].key < r[k].key) { k=j; } //用k指出每趟在无序区段的最小元素//
temp=r[i]; //将r[k]与r[i]交换//
r[i]=r[k];
r[k]=temp;
}
}
}
void ShowSort(SqList r,int n) //显示排序结果//
{
for(int i=1;i<=n;i++)
{
cout<<r[i].key<<" ";
}
}
void main()
{
SqList r;
int n;
bool f;
f=true;
while(f)
{
cout<<"请输入顺序表的长度:";
cin>>n;
cout<<"请输入顺序表的元素:";
for(int i=1;i<=n;i++)
{ cin>>r[i].key; }
cout<<endl;
cout<<"用<起泡排序>进行排序得到:"<<endl;
BubbleSort(r,n);
ShowSort(r,n);
cout<<endl<<endl;
cout<<"用<插入排序>进行排序得到:"<<endl;
InsertSort(r,n);
ShowSort(r,n);
cout<<endl<<endl;
cout<<"用<选择排序>进行排序得到:"<<endl;
SelectSort(r,n);
ShowSort(r,n);
cout<<endl<<endl;
cout<<"要继续请输入Y或y,退出按其它键:";
char c;
cin>>c;
if(c=='Y' || c=='y') { f=true; }
else { f=false; }
cout<<endl;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -