我写的是快速排序,现在的问题是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);
}
利用C语言写出 100万个实型数(随机产生)进行排序,求教各位大神!
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- qq_37006294 2016-12-11 14:13关注
怪我年少,把你的问题看成了答案,害我抄有来有去的 还调试了半天 叫了学霸舍友来研究 花了半个小时也没有研究透,说看不懂 大家一直把它默认为正确答案 唉 后来知道真相的我眼泪掉下来
解决 1无用
悬赏问题
- ¥15 matlab实现基于主成分变换的图像融合。
- ¥15 对于相关问题的求解与代码
- ¥15 ubuntu子系统密码忘记
- ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
- ¥15 保护模式-系统加载-段寄存器
- ¥15 电脑桌面设定一个区域禁止鼠标操作
- ¥15 求NPF226060磁芯的详细资料
- ¥15 使用R语言marginaleffects包进行边际效应图绘制
- ¥20 usb设备兼容性问题
- ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊