access violiation

Slamdunk_LWH 2012-06-23 07:44:11
#include <fstream>
#include <stdio.h>
#include "my.h"
#include<stdlib.h>
#include<math.h>


void QuickSort(int a[],int low,int high)
{ int i=low,j=high;
int temp=a[low];
while(i<j)
{ while(j>i&&temp<=a[j]) j--;
if(j>i) { a[i]=a[j]; i++; }
while(j>i&&a[i]<temp) i++;
if(j>i) { a[j]=a[i]; j--; }
}
a[i]=temp;
if(low<i) QuickSort(a,low,i-1);
if(i<high)QuickSort(a,j+1,high);
}


void insertSort(int a[],int n){
int k,t,j;
for ( j=0; j<n; j++){
t = a[j];
for (k=j-1; k>=0 && t<a[k]; k--){
a[k + 1] = a[k];
}
a[k + 1] = t;
}
}

void selectionSort(int a[],int n){
int i,j,min,temp;
for(j=0; j < n - 1; j++){
min=j;
for(i=j+1; i < n; i++)
if(a[i] < a[min])
min = i;
if(j != min){
temp = a[j];
a[j] = a[min];
a[min] = temp;
}
}
}

void bubbleSort(int a[],int n){
int temp = 0,i,j;
for( i = 0;i < n;i++){
for( j = 0;j < n - i -1;j++){
if(a[j] > a[j + 1]){
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
}


void dui(int a[],int n)
{
int i , k;

for (i = n/2-1; i >= 0; i --) shift(a , i , n);
for (i = n-1; i >= 1; i --)
{
k = a[0]; a[0] = a[i]; a[i] = k;
shift(a , 0 , i);
}
}
void shift(int a[] , int i , int m)
{
int k , t;

t = a[i]; k = 2 * i + 1;
while (k < m)
{
if ((k < m - 1) && (a[k] < a[k+1])) k ++;
if (t < a[k]) {a[i] = a[k]; i = k; k = 2 * i + 1;}
else break;
}
a[i] = t;
}



void Merge(int L[],int low,int mid,int high) //归并
{
int i=low,j=mid+1,p=0;
int *temp;
temp=(int *)malloc((high-low+1)*sizeof(int)); //用一个动态的数组存放暂时排好序的数组
if(!temp)return;
while(i<=mid&&j<=high)
temp[p++]=(L[i]<=L[j])?L[i++]:L[j++];
while(i<=mid) //添加从i到mid的数到temp中
temp[p++]=L[i++];
while(j<=high) //添加从j到high的数到temp中
temp[p++]=L[j++];
for(p=0,i=low;i<=high;p++,i++)
L[i]=temp[p];//将temp中一排好序的数放入L中
}


void MergeSort(int *p,int low,int high)//拆分
{
int mid;
if(low<high)
{
mid=(low+high)/2;
MergeSort(p,low,mid);
MergeSort(p,mid+1,high);
Merge(p,low,mid,high);
}
}



void initiate(int *x, int n)
{
int h, j, k, t;
for (h=n/2; h>0; h=h/2) /*控制增量*/
{
for (j=h; j<n; j++) /*这个实际上就是上面的直接插入排序*/
{
t = *(x+j);
for (k=j-h; (k>=0 && t<*(x+k)); k-=h)
{
*(x+k+h) = *(x+k);
}
*(x+k+h) = t;
现在我真的急需解答,那位好心的高手帮帮忙啊!!
当编译和链接都没有错误的时候,运行时出现了内存不能读取的问题,上面显示unhandled exception in 功能函数(本文件名)access violiation
...全文
74 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
smsgreenlife 2012-06-23
  • 打赏
  • 举报
回复
单步调试,每个函数都要调试,相信你行的!
qq120848369 2012-06-23
  • 打赏
  • 举报
回复
do it yourself。
W170532934 2012-06-23
  • 打赏
  • 举报
回复
加断点,慢慢调试,看哪步访问了非法内存。
善良超锅锅 2012-06-23
  • 打赏
  • 举报
回复
我以前遇到这个是内存错误

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧