编了一个冒泡排序,不知道问题出哪了,最后输出的顺序没变

#include
void bulsort(int a[]);
void main()
{
int ar[10];
printf("please input ten numbers;\n");
for(int i=0;i<10;i++)
scanf("%d",&ar[i]);
printf("the original order is\n");
for(i=0;i<10;i++)
printf("%4d",ar[i]);
printf("\n");
bulsort(ar);
printf("the final order is\n");
for(i=0;i<10;i++)
printf("%4d",ar[i]);
printf("\n");

}
void bulsort(int ar[])
{
int lon=sizeof(ar)/sizeof(int),tem,i;
for(int j=1;j {
for(i=0;i {
if(ar[i]>ar[i+1])
{
tem=ar[i];
ar[i]=ar[i+1];
ar[i+1]=tem;
}
}
}

}

http://jingyan.baidu.com/article/6525d4b13f920bac7d2e9484.html

你这方法里的两个for循环怎么看着有点迷,,lon变量也没见你用啊。。。

for(int j=1;j<lon;j++){

for(i=0;i<j;i++){

}

}

关键地方代码不全呢

for(int j=1;j {
for(i=0;i {

##for循环嵌套那块没显示全
##可以参考下面的代码

void Print(int* arr, size_t n)
{
for (size_t i = 0; i < n; ++i)
{
cout << arr[i] << " ";
}
cout << endl;
}

//冒泡排序的优化版本
void BubbleSort(int* arr, size_t n)
{
bool flag = true;
//进行n-1次的外循环
for (size_t i = 0; i < n - 1; i++)
{
//每次循环比较n-i-1次
for (size_t j = 0; j < n - i - 1; j++)
{
if (arr[j] > arr[j + 1])
{
swap(arr[j], arr[j + 1]);
//更改标记,用于判断是否有序
flag = false;
}
}
//表示已经有序,直接返回
if (false == true)
return;
}
}

void TestBubbleSort()
{
int arr[10] = { 1, 3, 5, 7, 9, 2, 4, 6, 8, 0 };
BubbleSort(arr, 10);
cout << "冒泡排序:" << endl;
Print(arr, 10);
}

复制出错了,抱歉问题已解决,计算lon出错了。