c语言数据结构(6)

2018-12-22 23:59

问题4.2:另一个常用排序方法(冒泡排序)*

//从后往前,即最先排好的是头部void sortArray(intarray[], intn){

//从前往后,即最先排好的是尾部

inti, j, tmp; void sortArray(int array[], int n)for(i=1;i

{for (j=n-1;j>=i;j--){

int i, j, tmp; if(array[j]>array[j-1]){

tmp= array[j-1]; for(i=0;i

if(array[j]

tmp = array[j+1]; }

}array[j+1] = array[j];

array[j] = tmp; }

} }}}

问题4.2:另一种方法

?

在上述方法中,学生成绩一次全部读入,然后再排序后输出。

还有一种方法为每读入一个数据,就将其加到一个有序数据集中的相应位置上,无需最后排序。其具体算法如下:

?

问题4.2:另一种算法

1.设整型数组scorelist存放排序后成绩,n为其中学生成绩个数,初始n为0;2.分别以读和写方式打开文件scorelist.in和scorelist.out;3.while 读文件中还有成绩时,读入一个成绩到score将score插入到有序数组scorelist中相应位置;4.输出数组scorelist到写文件中;设函数void insertData(int array[ ],int data);将一个变量插入到有序(从大到小)数组array中,插入后数组仍有序。5.关闭读写文件;问题4.2:函数insertData算法

?找到数组array中第一个比data小的数组元素,设其下标为i;将下标大于等于i的所有数组元素向后移动一个位置;array[i]=data;数组元素个数n加1;数组实际元素个数需要在insertData和main函数中都用到,如何在程序中函数间共享数据?1)通过函数参数传递。但函数参数方式为传值,若要通过函数调用改变实参的值,要用到指针。2)通过return语句返回值。注意只能返回一个值。3)使用全局变量。???问题4.2:另一种代码实现

//c4_2b.cvoid insertData( int array[ ], int data )#include {#define NUM 200int i, j;int N = 0;void insertData(int array[], int data);for( i=0; iarray[i]){break;int scorelist[NUM],score, i;for( j=N; j>i; j--)FILE *in, *out;if((in = fopen(\array[j] = array[j-1];printf(\array[i]=data;return 1;N为一个全局变量。N++;}查找要插入的位置if((out = fopen(\}printf(\return 1;}while(fscanf(in,\从插入位置开始所有元素向后移动一insertData(scorelist, score);个元素。for(i=0; i

c语言数据结构(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:电子商务b2c实验报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: