排序
#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控制著每趟排序過程中元素比較的次數(shù)
}
}
void main()
{
int i,n;
?RecType R[MAX];
?
printf("\n請(qǐng)輸入順序表元素的個(gè)數(shù)");
? ?scanf("%d",&n);
? ?printf("\n請(qǐng)輸入%d個(gè)整數(shù),將其存入順序表",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請(qǐng)輸入排序算法對(duì)應(yīng)的序號(hào)");
scanf("%d",&i);
switch(i)
{
? case 1:
? InsertSort(R,n);
? printf("\n直接插入排序的結(jié)果為");
? for(i=1;i<=n;i++)
? printf("%4d",R[i].key );
? printf("\n\n");
? break;
? case 2:
? BubbleSort(R,n);
? printf("\n冒泡排序的結(jié)果為");
? ?for(i=1;i<=n;i++)
? printf("%4d",R[i].key );
? printf("\n\n");
? case 3:
? exit(0);//正常結(jié)束程序運(yùn)行
}
?}system("pause");
}