使用冒泡排序的时候出现的错误
使用冒泡排序的时候出现的异常
代码如下:
反汇编中断指向了:
中断指向第22行,但是把第21行删掉后又能成功运行,这是为什么?
------解决方案--------------------
还有第二个for循环的第三个参数是b++
------解决方案--------------------
for (b=0;b<6-k;b++)
造成问题的原因基本上是不好的习惯导致的,
------解决方案--------------------
16行b++
把第21行删掉后又能成功运行???
你确定?
一个简单的冒泡排序没必要#define吧
代码如下:
#include <stdio.h>调试的时候出现了:
#define N 7
void pai (int a[]);
int main (void)
{
int er[N]={54,34,23,76,98,2,6};
pai (er);
}
void pai (int a[]) /*对数组进行排序*/
{
int k,b,tem;
for (k=0;k<7;k++)
{
for (b=0;b<6-k;a++)
{
if (a[b]>a[b+1])
{
tem = a[b];
a[b] = a[b+1];
a[b+1] =tem;
}
}
}
}
反汇编中断指向了:
中断指向第22行,但是把第21行删掉后又能成功运行,这是为什么?
------解决方案--------------------
还有第二个for循环的第三个参数是b++
------解决方案--------------------
for (b=0;b<6-k;b++)
造成问题的原因基本上是不好的习惯导致的,
------解决方案--------------------
16行b++
把第21行删掉后又能成功运行???
你确定?
一个简单的冒泡排序没必要#define吧
# include <stdio.h>
void sort(int * a, int len);
int main(void)
{
int a[6] = {10, 2, 8, -8, 11, 0};
int i;
sort(a, 6);
for (i=0; i<6; ++i)
{
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
//冒泡排序
void sort(int * a, int len)
{
int i, j, t;
for (i=0; i<len-1; ++i)
{
for (j=0; j<len-1-i; ++j)
{
if (a[j] > a[j+1]) // >表示升序 <表示降序
{
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
}
}