完整的冒泡排序实现以及原理

    xiaoxiao2021-04-12  39

    原理图:

    实现代码:

    package com.zg.sort; /** * 冒泡排序 * 比较次数的公式: N*(N-1)/2 * 原理:相邻元素两两比较,值较大者往后放,第一次比较完毕,最大值出现在了最大索引处。 */ public class BubbleSort { public static void main(String[] args) { //定义一个数组 int [] num={24,69,80,57,13}; System.out.println("冒泡排序前:"); for (int i : num) { System.out.print(i+" "); } //第一次比较 //num.length-1是为了防止数组越界 num.length-1-0是减少比较的次数 for (int i = 0; i < num.length-1-0; i++) { if(num[i]>num[i+1]){ int temp=num[i]; num[i]=num[i+1]; num[i+1]=temp; } } System.out.println("\n第一次比较后:"); for (int i : num) { System.out.print(i+" "); } //第二次比较 for (int i = 0; i < num.length-1-1; i++) { if(num[i]>num[i+1]){ int temp=num[i]; num[i]=num[i+1]; num[i+1]=temp; } } System.out.println("\n第二次比较后:"); for (int i : num) { System.out.print(i+" "); } //第三次比较 for (int i = 0; i < num.length-1-2; i++) { if(num[i]>num[i+1]){ int temp=num[i]; num[i]=num[i+1]; num[i+1]=temp; } } System.out.println("\n第三次比较后:"); for (int i : num) { System.out.print(i+" "); } //第四次比较 for (int i = 0; i < num.length-1-3; i++) { if(num[i]>num[i+1]){ int temp=num[i]; num[i]=num[i+1]; num[i+1]=temp; } } System.out.println("\n第四次比较后:"); for (int i : num) { System.out.print(i+" "); } //根据上面代码的特点进行改进 for (int j = 0; j< 4; j++) { for (int i = 0; i < num.length-1-j; i++) { if(num[i]>num[i+1]){ int temp=num[i]; num[i]=num[i+1]; num[i+1]=temp; } } } System.out.println("\n代码改进后:"); for (int i : num) { System.out.print(i+" "); } //上面是知道数组的长度,所以可以直接写死,再修改灵活一点的做法 for (int j = 0; j< num.length-1; j++) { for (int i = 0; i < num.length-1-j; i++) { if(num[i]>num[i+1]){ int temp=num[i]; num[i]=num[i+1]; num[i+1]=temp; } } } System.out.println("\n终版冒泡后:"); for (int i : num) { System.out.print(i+" "); } } }

    结果:

    转载请注明原文地址: https://ju.6miu.com/read-667575.html

    最新回复(0)