c语言 将数据读出并进行排序,然后将排好序的数据按照原始数据的格式写入(一行10个 在线,402个数据

速度,谢谢... 速度 ,谢谢 展开
 我来答
iamagoodguy
2012-06-14 · TA获得超过840个赞
知道小有建树答主
回答量:175
采纳率:100%
帮助的人:95.6万
展开全部
//sumos团队
以下程序符合要求,在VC6.0中编译通过
//任何其他问题,追问我哦 ^_^
#include<stdio.h>
#include<fstream.h>
#include<windows.h>

#define MaxSize 402

typedef struct{ //存取数据的结构体
int data[MaxSize];
}Data;

int data[MaxSize];

bool WriteNumbers( int);
bool ReadNumbers();
void Sort( int [], int ,int);
bool Init();

int main(){
WriteNumbers( 0); //产生待排序的随机数文件
ReadNumbers(); //读取文件内容
Sort( data, 0, MaxSize - 1); //排序
WriteNumbers( 1); //重新写入文件
return 0;
}//main

void Sort( int _data[], int _beg, int _end){
int i = _beg, j = _end, tmp;
if( _beg < _end){
tmp = data[i];
while( i < j){
while( i < j && data[j] >= tmp){
j--;
}
data[i] = data[j];
while( i < j && data[i] <= tmp){
i++;
}
data[j] = data[i];
}
data[i] = tmp;
Sort( _data, _beg, i - 1);
Sort( _data, i + 1, _end);
}
}

//读取数据
bool ReadNumbers(){
ifstream ifile;
Data num; int p = 0;
ifile.open( "d:\\a.dat", ios::in | ios::binary);
if( ifile){
ifile.read( ( char *)&num, sizeof( num));
for( int i = 0; i < MaxSize; i++){
data[i] = num.data[i];
}
ifile.close();
printf( "读入数据完成\n");
return true;
}else{
printf( "读入数据失败:检查数据文件d:\\a.dat是否存在。\n");
return false;
}
}//ReadNumbers

//产生测试数据
bool WriteNumbers( int cmd){
Data num;
ofstream ofile;
ofile.open( "d:\\a.dat", ios::out | ios::binary);
if( ofile){
for( int i = 0; i < MaxSize; i++){
if( cmd) num.data[i] = data[i];
else num.data[i] = rand();
}
ofile.write( ( char *)&num, sizeof( num));
ofile.close();
printf( "写入数据完成\n");
return true;
}else{
printf( "写入文件失败: 检查磁盘写保护状态。\n");
return false;
}
}//WriteNumbers
馨富白e
2012-06-13 · TA获得超过147个赞
知道答主
回答量:298
采纳率:0%
帮助的人:88.1万
展开全部
你看看快排和文件的使用吧,不难
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式