欢迎光临散文网 会员登陆 & 注册

排序

2023-06-05 17:38 作者:小梁仙气飘飘  | 我要投稿

#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");

}


排序的评论 (共 条)

分享到微博请遵守国家法律