求C语言冒泡排序!!!急!!急!!!

1.要求每个小问题都要用子函数实现,最后在主函数中调用。
2.从键盘输入记录数,依次输入个记录元素数值,以这些数值的和为关键字进行冒泡排序,最后在屏幕上输出排序后的记录
3.要有6趟冒泡过程
4.另外编写双向冒泡

我写个冒泡法的算法实现函数
typedef int KeyType

typedef struct
{
KeyType key;
InforTyjpe otherdata;
}RecordType;/*定义结构体类型

void BunnleSort(RecData R,int n)
{
int i,j,flag; /*flag为交换标志量
RecordType temp; /*RextrdType是关键字类型*/
for(i=1;i<n;i++)
{
flag=0; /*每趟开始前,flag=0,即无交换发生*/
for(j=0;j<n-1;j++)
if(R[j].key>R[j+1].key)/*找最大关键字*/
{
flag=1;
temp=R[j];
R[j]=R[j+1];
R[j+1]=temp;
}
if(flag==0) /*本趟无交换,提前推出*/
return;
}
}

你可以写个主函数调用上面的BunnleSort函数,也可以不用结构体类型,用整型,浮点型等,把R〔n〕当实参调用就行了,要是不能我明天在给你写个
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-01-16
#include "stdio.h"
#define N 6 //6趟排序

void sort(int b[]); //排序函数

void main()
{
int i;
int a[1000];

printf("\n请输入这%d个数据:\n",N);
for(i=1; i<=N; i++)
scanf("%d",&a[i]);

printf("\n你输入的数据如下:");
for(i=1; i<=N; i++)
{
printf("%5d",a[i]);
}

sort(a);
printf("\n\n由小到大顺序:\n");

for(i=1; i<=N; i++)
printf("%d\n",a[i]);

printf("\n");
}

void sort(int b[]) //排序函数的实现
{
int i,j,t;

for(j=1; j<N; j++)
for (i=1; i<=N-j; i++)
{
if (b[i]>b[i+1])
{
t=b[i];
b[i]=b[i+1];
b[i+1]=t;
}
}
}
相似回答
大家正在搜