冒泡排序关于次数的问题
2017-12-27 17:27
267 查看
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n,i,j,t,a[5];
printf("请输入长度");
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("初始数据为");
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
for(j=0;j<n-1;j++) { //n-1次循环,实现n-1趟比较
for(i=0;i<n-j-1;i++) //在每趟中进行n-j-1次比较
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf("第%d趟",j+1);
for(i=0;i<n;i++)
{
printf("%d\t",a[i]);
}
printf("\n");
}
printf("冒泡之后为:");
for(i=0;i<n;i++)
{
printf("%d\t",a[i]);
}
printf("\n");
return 0;
}
五个数字比较四次,四个数比较三次,(不能直接i-1)
要分析造成这东西的原因是什么,j=1的时候已经比较好最大的数字 放在最后了。。。
#include<stdlib.h>
int main()
{
int n,i,j,t,a[5];
printf("请输入长度");
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("初始数据为");
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
for(j=0;j<n-1;j++) { //n-1次循环,实现n-1趟比较
for(i=0;i<n-j-1;i++) //在每趟中进行n-j-1次比较
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf("第%d趟",j+1);
for(i=0;i<n;i++)
{
printf("%d\t",a[i]);
}
printf("\n");
}
printf("冒泡之后为:");
for(i=0;i<n;i++)
{
printf("%d\t",a[i]);
}
printf("\n");
return 0;
}
五个数字比较四次,四个数比较三次,(不能直接i-1)
要分析造成这东西的原因是什么,j=1的时候已经比较好最大的数字 放在最后了。。。
相关文章推荐
- 【算法28】冒泡排序中的交换次数问题
- 关于数组的问题(连续子数组的最大和、数组中出现次数超过一半的数字、调整数组顺序使奇数位于偶数之前)
- 关于数组的问题(连续子数组的最大和、数组中出现次数超过一半的数字、调整数组顺序使奇数位于偶数之前)
- 关于数组的问题(连续子数组的最大和、数组中出现次数超过一半的数字、调整数组顺序使奇数位于偶数之前)
- 理工大学ACM平台题答案关于C语言 2247 统计次数问题
- 关于NSXMLParser的foundCharacters方法调用次数的问题
- 关于数组的问题(连续子数组的最大和、数组中出现次数超过一半的数字、调整数组顺序使奇数位于偶数之前)
- 关于排序问题-冒泡排序的简单案例
- Android-关于一个界面同级中需要两个listView时,一个ListView被嵌套在ScrollView中,ListView的适配器adapter中的getView执行次数重复问题
- 关于数组的问题(连续子数组的最大和、数组中出现次数超过一半的数字、调整数组顺序使奇数位于偶数之前)
- 关于数组的问题(连续子数组的最大和、数组中出现次数超过一半的数字、调整数组顺序使奇数位于偶数之前)
- 关于数组的问题(连续子数组的最大和、数组中出现次数超过一半的数字、调整数组顺序使奇数位于偶数之前)
- 关于控制初始化次数的问题
- 关于VC串口控件MSComm响应中断函数次数不定的问题
- 关于解决水晶报表打印次数限制的问题
- 关于jquery on方法进行事件绑定触发次数指数叠加的问题
- 关于数组的排序问题(冒泡排序,选择排序,插入排序)
- 关于数组的排序问题(冒泡排序,选择排序,插入排序)
- C语言中关于排序问题(一冒泡排序)
- tensorflow下mnist实例,关于迭代次数及随机取数据集大小问题