排序
#include<stdio.h>
#include<stdlib.h>
#define MAX 100
typedef struct{
int key;
}RecType;
//直接插入排序
void InsertSort(RecType R[],int n)
{
int i,j;
for(i=2;i<=n;i++)
if(R[i].key<R[i-1].key )
{
R[0]=R[i];
R[i]=R[i-1];
for(j=i-2;R[0].key ;--j)
R[j+1]=R[j];
R[j+1]=R[0];
}
}
void BubbleSort(RecType R[],int n)//冒泡排序
{
int j,flag,m;
m=n-1;
flag=1;
while((m>0)&&(flag==1))
{
flag=0;
for(j=1;j<=m;j++)
if(R[j].key>R[j+1].key )
{
flag=1 ;
R[0]=R[j];//R[0]为辅助空间,用于交换
R[j]=R[j+1] ;
R[j+1]=R[0];
}
--m ;//m控制着每趟排序过程中元素比较的次数
}
}
void main()
{
int i,n;
RecType R[MAX];
printf("\n请输入顺序表元素的个数");
scanf("%d",&n);
printf("\n请输入%d个整数,将其存入顺序表",n);
for(i=1;i<=n;i++)
scanf("%d",&R[i].key );
printf("\t******Select******\n");
printf("\t1:Insert Sort\n");
printf("\t2:Bubble Sort\n");
printf("\t3:Exit\n");
printf("\t*********************\n");
while(1)
{
printf("\n请输入排序算法对应的序号");
scanf("%d",&i);
switch(i)
{
case 1:
InsertSort(R,n);
printf("\n直接插入排序的结果为");
for(i=1;i<=n;i++)
printf("%4d",R[i].key );
printf("\n\n");
break;
case 2:
BubbleSort(R,n);
printf("\n冒泡排序的结果为");
for(i=1;i<=n;i++)
printf("%4d",R[i].key );
printf("\n\n");
case 3:
exit(0);//正常结束程序运行
}
}system("pause");
}