1.思路:
有n个数,第一趟从第一个数开始,依次与右边的数比较,如果比右边的数大则交换,这样第一趟比较和交换过后大的数会在最右边;再从第一个数开始向右比较交换得到第二大的数;以此类推,经过n-1趟比较交换,可得到有序数列。
代码中还展示了两种经过优化的冒泡排序,优化一的思路是某一趟排序没有发生过交换,说明数列已经有序,不需要再进行后续的比较和交换;优化二的思路是跳跃式的修改每次比较交换的边界,从而减少了循环和比较的次数。
2.图片演示:
3.代码示例:
package sort;
import java.util.Arrays;
/**
* 冒泡排序
*
*/
public class Bubble {
public static void main(String[] args) {
int[] arr1 = {
44,38,5,47,15,31,32,88,2,23,43,54,1,7,56,100,101,102};
int[] arr2=arr1.clone();
int[] arr3=arr1.clone();
bubble(arr1);
bubbleOptimization1(arr2);