/*TODO:起泡排序
功能描述:实现起泡排序功能。
MAX=1000;
将输入参数数组复制到临时变量数组,然后排序。
将移动次数累计赋值给Compare1,每次累加1,将交换次数累计赋值给Change1,每次累加3。
参数说明:A-整形数组参数 待排序数组
返回值说明:无
*/
void Pop(int A[max])
{
int i, j, len, flag = 1 ,chage;
int arry[max + 1];
for (i = 0; i < max; ++i)
arry[i] = cache[i];
len = max;
for (i = 0; i < max; i++)
{
for (j = 0; j < max-i; j++)
{
Compare1++;
if (arry[j] > arry[j + 1])
{
chage = arry[j];
arry[j] = arry[j + 1];
arry[j + 1] = chage;
Change1+=3;
}
}
}
}
我的答案:
标准答案:
比较次数为:50005000
交换次数为:103098750
不知道为啥交换次数少了 ;
还有一个问题 为了满足5000500我使用了
for (j = 0; j < max-i; j++)
但我平时为了防止 j+1 ;越界 都使用
for(j=0;j<max-i-1 ;j++)
测试发现任然能够排序,不会越界这是为什么?