请帮助我了解这种数组排序(气泡排序)

时间:2019-07-17 17:00:45

标签: java loops for-loop

当两个循环都从0开始并且两个索引之间的比较具有相同的值时,它是如何工作的

public class BubbleSort {
    public static void main(String[] args)
    {
        int arr[]={5,1,2,1,1,4,4,4,4,4,3};

        for(int i=0;i<arr.length;i++)//i=0
        {
            for(int j=0;j<arr.length;j++)//j=0
            {
                if(arr[i]>arr[j])//i=5>j=5
                {
                   int temp=arr[i];
                   arr[i]=arr[j];
                   arr[j]=temp;
                }
            }
        }
        for(int k=0;k<arr.length;k++)
            System.out.println(arr[k]);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

因此,如果我尝试总结您的代码:

  1. 有两个循环(带有迭代器i和j)

  2. 在第一个for循环中,我们一个接一个地获取数组的每个元素,然后将该元素(我们称其为“当前元素”)与其他元素(包括“当前元素”)进行比较,因为在第二个for循环中,i和j可能具有相同的值,即i = 0,j = 0; i = 1,j = 1)。

  3. 现在,在此比较中,如果“当前元素”大于我们在第二个for循环中比较的元素,则交换该元素。

  4. 因此,随着执行的不断进行,具有较大值的元素将移向数组的右侧,而具有较小值的元素将移至数组的左侧。

  5. 最终将对数组进行排序。

之所以称为气泡排序,是因为元素已排序并像气泡一样向上移动到数组。

您可以在此处找到更多信息:https://www.hackerearth.com/practice/algorithms/sorting/bubble-sort/tutorial/