为什么我的冒泡排序算法实现对整个数组进行排序并跳过第一个索引?

public static int[] bubbleSort(int[] inputArray){


        for(int i = 0; i < inputArray.length  - 1; i++ ){


            int tempa = inputArray[i];

            int tempb = inputArray[i + 1];


            if(inputArray[i] > inputArray[i + 1]){

                inputArray[i] = tempb;

                inputArray[i + 1] = tempa;

                i = 0;

                System.out.println(Arrays.toString(inputArray));

            }

        }

        return inputArray;

}

此实现接受[20, 35, -15, 7, 55, 1, -22]并返回[20, -22, -15, 1, 7, 35, 55]. 对除第一个索引之外的所有内容进行排序。


萧十郎
浏览 59回答 1
1回答

蓝山帝景

为什么...跳过第一个索引?因为您i = 0在循环内部设置,但随后循环将执行i++,因此仅在第一次迭代时检查第一个元素,而不是在任何“重新启动”时检查。要正确重新启动,请使用i = -1使i++重新启动发生在i = 0,而不是在i = 1。这将使代码正常工作,但是在交换两个元素后立即重新启动效率很低,因为您将反复重新检查数组的开头。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java