C 气泡排序概念
我只想解释一下嵌套for循环中的条件。 如何处理它,我有点困惑。我想要两个for循环条件背后的逻辑C 气泡排序概念,c,C,我只想解释一下嵌套for循环中的条件。 如何处理它,我有点困惑。我想要两个for循环条件背后的逻辑 #include<stdio.h> void bubblesort(int a[25],int n); int main() { int a[25],size,i; printf("Enter the size of an array"); scanf("%d",&size); for(i=0;i<size;i++) {
#include<stdio.h>
void bubblesort(int a[25],int n);
int main()
{
int a[25],size,i;
printf("Enter the size of an array");
scanf("%d",&size);
for(i=0;i<size;i++)
{
scanf("%d",&a[i]);
}
bubblesort(a,size);
for(i=0;i<size;i++)
{
printf("%d\t",a[i]);
}
return 0;
}
void bubblesort(int a[], int n)
{
int temp,i,j;
for(i=0;i<n;i++)
{
for(j=0;j<(n-i)-1;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]= temp;
}
}
}
}
#包括
void bubblesort(int a[25],int n);
int main()
{
int a[25],尺寸,i;
printf(“输入数组的大小”);
scanf(“%d”,大小(&S);
对于(i=0;i冒泡排序是对整数数组进行排序的常用算法。它被称为“冒泡排序”,因为它会导致最大值“冒泡”到数组末尾
冒泡排序一次向上移动数组中的一个索引,实质上是拉取最大值。例如,如果数组是[1,3,2]
气泡排序将检查1
并查看它是否大于前面的值:3
。事实并非如此,因此该值将保留在原来的位置。现在3
是程序看到的最大值,因此它会将其与下一个值进行比较,2
。是3
更大吗?是的!因此它将切换3
和2
。现在最大的值在数组的末尾,因此算法再次从数组的开头开始。这将重复进行,直到整个数组被排序
有关详细信息:
执行(i=0;ia[j+1])``的第一个for循环,一个值将一直移动到数组的末尾。因此,不需要检查数组中的最后一个点,因为它已经正确了
摘要:
冒泡排序不断地将最大值移动到列表的末尾。它通过在列表上移时不断检查值,并一次将最大值上移一步来实现
编辑:查看Cool Guy的评论,获取气泡排序的最佳视觉表示链接。最大元素由一个循环一个循环确定。拿一张纸和一支笔,查看代码,跟踪所有这些变量所包含的数据。这是一个很好的动画,可以帮助您更好地理解。我已经完成了,但甚至无法获得清楚的想法。。。。