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 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况
  • ¥15 画两个图 python或R
  • ¥15 在线请求openmv与pixhawk 实现实时目标跟踪的具体通讯方法
  • ¥15 八路抢答器设计出现故障
  • ¥15 opencv 无法读取视频
  • ¥15 按键修改电子时钟,C51单片机
  • ¥60 Java中实现如何实现张量类,并用于图像处理(不运用其他科学计算库和图像处理库))