ABC_gt 2016-12-07 15:21 采纳率: 0%
浏览 3430

利用C语言写出 100万个实型数(随机产生)进行排序,求教各位大神!

我写的是快速排序,现在的问题是1.无法运行到100万个数,到10万有时候就会出错了;2. 想要在生成随机数之后将随机数保存在一个TXT文件中,在将数据全部排序之后将排序后的数据也保存在同一个TXT文件中,但是我写出来的代码总是有问题,TXT中保存的都是乱码。求教大神们帮我改改我的程序!万分感谢!代码如下:
#include"iostream.h"
#include"stdio.h"
#include"time.h"
#define LQ(a,b) (a)<(b)
#include"stdlib.h"
#include"iomanip.h"
#define MAX_SIZE 10000
typedef double KeyType ;
typedef struct RecType
{
KeyType key ; /* 关键字码 /
}RecType ;
typedef struct Sqlist
{

RecType R[MAX_SIZE+1] ;
int length ;
}Sqlist ;
void print(Sqlist a)
{
cout<<" a[0]="< srand(time(NULL));
a.length=MAX_SIZE;
for(i=1;i a.R[i].key=rand()%10000*0.1; //使之产生0-9之间的随机数
for(i=1;i fprintf(fp,"%d\t",a.R[i].key);
fclose(fp);
}
int quick_one_pass(Sqlist *L , int low, int high)
{
int i=low, j=high ;
L->R[0]=L->R[i] ; /
R[0]作为临时单元和哨兵 /
do
{

while (LQ(L->R[0].key, L->R[j].key)&&(j>i))
j-- ;
if (j>i) { L->R[i]=L->R[j] ; i++; }
while (LQ(L->R[i].key,L->R[0].key)&&(j>i))
i++ ;
if (j>i) { L->R[j]=L->R[i] ; j--; }
} while(i!=j) ; /
i=j时退出扫描 /
L->R[i]=L->R[0] ;
return(i) ;
}
void quick_Sort(Sqlist *L , int low, int high)
{
int k ;
if(low<high)
{ k=quick_one_pass(L, low, high);
quick_Sort(L, low, k-1);
quick_Sort(L, k+1, high);
} /
序列分为两部分后分别对每个子序列排序 */
}
void main()
{
Sqlist a;
RecType DR[MAX_SIZE];
init(a);
print(a);
quick_Sort(&a,1,a.length);
print(a);
}

  • 写回答

3条回答 默认 最新

  • qq_37006294 2016-12-11 14:13
    关注

    怪我年少,把你的问题看成了答案,害我抄有来有去的 还调试了半天 叫了学霸舍友来研究 花了半个小时也没有研究透,说看不懂 大家一直把它默认为正确答案 唉 后来知道真相的我眼泪掉下来

    评论

报告相同问题?

悬赏问题

  • ¥15 matlab实现基于主成分变换的图像融合。
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊