刚刚看到书上一个折半插入排序的程序,看来看去不是很明白,上网搜索了下,基本连抄带改把程序运行出来了,感觉没有什么问题了,可是看起来还是有点问题,显示的是:
Debug Error!
Program:...
Module:...cuments/....
File:
Run-Time Check Failure #2 - Stack around the variable ' a' was corruptred.
(Press Retry to debug the application)
郁闷ing...先贴程序
懒了,先找会bug...找不到就睡觉,明天接着看...
Debug Error!
Program:...
Module:...cuments/....
File:
Run-Time Check Failure #2 - Stack around the variable ' a' was corruptred.
(Press Retry to debug the application)
郁闷ing...先贴程序
CODE:
// array_4.cpp : Defines the entry point for the console application.
//binaryInsertSort
#include "stdafx.h"
#include <iostream>
using namespace std;
const int num=16;
int main(int argc, _TCHAR* argv[])
{
int a[num]={9,8,7,6,5,4,3,2,11,12,13,16,15,14,19,1};
int left,right,middle,tempRecord;
for(int i=1;i<num;i++)
{
tempRecord=a[i];//将当前待插入记录保存在临时变量中
left=0;
right=num-1;//记录已排好序序列的左右位置
while(left<=right)//开始查找待插入记录的正确位置
{
middle=(left+right)/2;//记录中间位置
if(tempRecord<a[middle])//如果待插入记录比中间记录小,就在左一半中查找,否则,在右一半中查找
right=middle-1;
else
left=middle+1;
}
//将前面所有大于当前待插入记录的记录后移
for(int j=i-1;j>=left;j--)
a[j+1]=a[j];
a[left]=tempRecord;//将待插入记录回填到正确位置.
}
for(int i=0;i<=num-1;i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}
//binaryInsertSort
#include "stdafx.h"
#include <iostream>
using namespace std;
const int num=16;
int main(int argc, _TCHAR* argv[])
{
int a[num]={9,8,7,6,5,4,3,2,11,12,13,16,15,14,19,1};
int left,right,middle,tempRecord;
for(int i=1;i<num;i++)
{
tempRecord=a[i];//将当前待插入记录保存在临时变量中
left=0;
right=num-1;//记录已排好序序列的左右位置
while(left<=right)//开始查找待插入记录的正确位置
{
middle=(left+right)/2;//记录中间位置
if(tempRecord<a[middle])//如果待插入记录比中间记录小,就在左一半中查找,否则,在右一半中查找
right=middle-1;
else
left=middle+1;
}
//将前面所有大于当前待插入记录的记录后移
for(int j=i-1;j>=left;j--)
a[j+1]=a[j];
a[left]=tempRecord;//将待插入记录回填到正确位置.
}
for(int i=0;i<=num-1;i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}
懒了,先找会bug...找不到就睡觉,明天接着看...
刚才自己看了会郁闷地不得了了...死活看不出来啊,就把这个链接发到群里了去了,拉着整群的人看...本来他们都讨论着聚餐那...hoho~~~先是请教了传说中的程序猿H同学...H同学显然是对vc有点距离...他指示我要转交河马...果然那句有困难找组织没说错,光荣而伟大的党组织的公务猿河马同志告知改为变量的声明,然后问题迎刃而解...虽然还是不能正确排序...但是debug error没了...修改方法如下:
int a[num]={9,8,7,6,5,4,3,2,11,12,13,16,15,14,19,1};
---->
static int a[num]={9,8,7,6,5,4,3,2,11,12,13,16,15,14,19,1};
over...排序的问题明天继续...
int a[num]={9,8,7,6,5,4,3,2,11,12,13,16,15,14,19,1};
---->
static int a[num]={9,8,7,6,5,4,3,2,11,12,13,16,15,14,19,1};
over...排序的问题明天继续...