C 气泡排序概念

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++) {

我只想解释一下嵌套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++)
    {
        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的评论,获取气泡排序的最佳视觉表示链接。

最大元素由一个循环一个循环确定。拿一张纸和一支笔,查看代码,跟踪所有这些变量所包含的数据。这是一个很好的动画,可以帮助您更好地理解。我已经完成了,但甚至无法获得清楚的想法。。。。