问题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