| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 416 人关注过本帖
标题:求解哪里产生了违例访问?
只看楼主 加入收藏
阻碍
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-11-5
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
求解哪里产生了违例访问?
#include<iostream>
#include<fstream>
#include<stdlib.h>
//#include<time.h>
//#include <algorithm>

using namespace std;

#define length 100

int partition(int a[],int m,int n)
{
    int i=m;
    int j=n+1;
    int x=a[m];
    while(1)
    {
        while(a[++i]<x);
        while(a[--j]>x);
        if(i>=j)
         break;
        else{
         int temp=a[i];
         a[i]=a[j];
         a[j]=temp;
         }
    }
}

void quicksort(int a[],int m,int n)
{
    if(m<n)
    {
       int q=partition(a,m,n);
       quicksort(a,m,q-1);
       quicksort(a,q+1,n);
       }
}

int main()
{
    int a[length];
//    time_t start,end;
    int i;
//    srand((unsigned)time(NULL));
    ifstream fin;
    fin.open("random_number.txt");
    if(!fin)
    {
        cout<<"can not open file 'random_number.txt'";
        return -1;
    }
    else
    {
        for(i=0;i<length;i++)
        {
            fin>>a[i];
        }
    }
    fin.close();
//    start=clock();
    quicksort(a,0,length-1);
//    end=clock();

    for(i=0;i<length;i++)
    {
        printf("%d",a[i]);
    }
    system("pause");
    //return 0;
}
搜索更多相关主题的帖子: include 
2014-11-05 22:39
stop1204
Rank: 9Rank: 9Rank: 9
来 自:福建省
等 级:贵宾
威 望:22
帖 子:295
专家分:1151
注 册:2013-9-8
收藏
得分:0 
int q=partition(a,m,n);
循环中的变量 j 有问题
        while(a[++i]<x);
        while(a[--j]>x);  //循环50次

fin>>a[i];    如果我读如一个长度超过整型的数.那么将出现错误.

你能跟我说下你想要这个程序要实现什么功能吗

[ 本帖最后由 stop1204 于 2014-11-6 08:09 编辑 ]

hl928452957@gmail点com

2014-11-06 07:56
阻碍
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-11-5
收藏
得分:0 
回复 2 楼 stop1204
随机数的快速排序
2014-11-06 09:23
阻碍
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-11-5
收藏
得分:0 
回复 2 楼 stop1204
该怎么修改啊?
2014-11-06 10:00
stop1204
Rank: 9Rank: 9Rank: 9
来 自:福建省
等 级:贵宾
威 望:22
帖 子:295
专家分:1151
注 册:2013-9-8
收藏
得分:0 
回复 4 楼 阻碍
如果确定你的随机数可以到几十位一个的话 那就用long double型

hl928452957@gmail点com

2014-11-06 11:17
阻碍
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-11-5
收藏
得分:0 
回复 5 楼 stop1204
我的随机数最大的999,都是不超过三位的
2014-11-06 11:35
stop1204
Rank: 9Rank: 9Rank: 9
来 自:福建省
等 级:贵宾
威 望:22
帖 子:295
专家分:1151
注 册:2013-9-8
收藏
得分:20 
回复 6 楼 阻碍
首先呢. 如果我random_number.txt 就存了5组数字
但是你读取的还是100次.即 另外95个是其他内存的数据
 if (fin.eof())
                break;
你得要先判断什么时候读取完毕.然后返回数字数量.再带入partition(int a[],int m,int n)

而且 你并没有用到&引用.  所以就算你排序完毕,最后在main输出的结果还是没排序的

hl928452957@gmail点com

2014-11-06 18:04
快速回复:求解哪里产生了违例访问?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023397 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved