实验内容:
输入一组关键字序列分别实现下列排序算法:
实现简单选择排序、直接插入排序和冒泡排序。
提示:关键字序列可用随机数产生。
在TC2中产生随机数列程:
#include<stdlib.h>
#include<stdio.h>
#include<time.h>
void main(void)
{int i;
randomize();
for(i=0;i<10;i++)
printf("%6d\n ",R(100));
下面是我自己根据课本编的:
#include<stdlib.h>
#include<stdio.h>
#include<time.h>
void main(void)
{int i;
randomize();
for(i=0;i<10;i++)
printf("%6d\n ",R(100));
D_InsertSort(R,i);
printf("the new list is:%6d\n ",R(i));
SelectSort(R,i);
printf("the new list is:%6d\n ",R(i));
BubbleSort(R,i);
printf("the new list is:%6d\n ",R(i));
}
void SelectSort(datatype R[],int n)
{for(i=1;i<n;i++)
{k=i;
for(j=i+1;j<=n;j++)
if(R[j].key<R[k].key)
k=j;
if(i!=k)
{R[0]=R[k];
R[k]=R[i];
R[i]=R[0]
}
}
void BubbleSort(datatype R[],int n)
{int i,j;
int swap;
for(i=1;i<=n-1;i++)
{swap=0;
for(j=1;j<=n-i;j++)
if(R[j].key>R[j+1].key)
{
R[0]=R[j];
R[j]=R[j+1];
R[j+1]=R[0];
swap=1;
}
if(swap==0)break;
}
}
void D_InsertSort(datatype R[].int n)
{
for(i=2;i<=n;i++)
if(R[i].key<R[i-1].key)
{R[0]=R[i];
for(j=i-1;R[0].key<R[j].key;j--)
R[j+1]=R[j];
R[j+1]=R[0];
}
}
在WIN-TC中运行,它给我的提示是:
22:变量列表语法错误。也就是void D_InsertSort(datatype R[].int n) 这种,好像这三个算法都是一样的提示。。。
不知道是怎么回事。。。。。在线高分等解答!!
经典排序之冒泡排序