冒泡排序的问题

发布网友 发布时间:2022-04-24 11:18

我来回答

4个回答

热心网友 时间:2022-05-22 03:03

在冒泡排序中外层循环控制内层循环的次数,按从小到大排列:第一次循环它是把第一个数和第二个数…最后一个数比较把比它小的进行位置交换。例:10,5,30,2,1;外循环
第一次循环:10与5比较
5,10,30,2,1;
5与30比较
5,10,30,2,1;
5与2比较2,10,30,5,1;
2与1比较1,10,30,5,2;第一次循环结束。

热心网友 时间:2022-05-22 04:21

数组元素从下标为0开始,而不是从1开始,所以改成以下样子
#include<stdio.h>
int main()
{
int n[10],j=10,i,temp;
for(i=0;i<10;i++) //=去掉
{
n[i]=j;
j--;
}
for(j=10;j>1;j--)
{
for(i=0;i<j-1;i++)
{
if(n[i+1]<n[i]) /*比较相邻元素*/
{
temp=n[i+1]; /*交换*/
n[i+1]=n[i];
n[i]=temp;
}
}
}
printf("\n");
for(i=0;i<10;i++) //=去掉
printf("%d ",n[i]);
return 0; //添上返回值
}

改了后再试

热心网友 时间:2022-05-22 05:56

把两处for中的i<=10改为i<10;

n[i]=j;
j--;
改成
j--;
n[i]=j;
就OK了……

热心网友 时间:2022-05-22 07:47

#include<stdio.h>
int main()
{
int n[10],j=9,i,temp;
for(i=0;i<10;i++)
{
n[i]=j;
j--;
}
for(j=10;j>0;j--)
{
for(i=0;i<j-1;i++)
{
if(n[i+1]<n[i]) /*比较相邻元素*/
{
temp=n[i+1]; /*交换*/
n[i+1]=n[i];
n[i]=temp;
}
}
}
printf("\n");
for(i=0;i<10;i++)
printf("%d ",n[i]);
}
试试~看看是不是你想要的

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com