利用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);
}

2个回答

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!