冒泡排序与优化

    科技2022-07-15  121

    冒泡排序思路:对一组是俩俩比较让大的数往后,进行多次(次数由具体数组决定)之后数组则会由小到大排列;

    //优化之前源代码

    package com.company; import java.util.Arrays; public class Main { public static void sequence(int[] arr){ //对数组所有数进行排序; for (int k=0;k<arr.length-1;k++){ for(int j = 1; j <arr.length-k; ++j) { if (arr[j-1]>arr[j]){ swap(arr,j-1,j); } } } } public static void printArray(int[] array) { //遍历输出 for (int e : array) { System.out.print(e + " "); } } public static void swap(int[] arr,int a,int b){ //交换前后数值 int temp=arr[a]; arr[a]=arr[b]; arr[b]=temp; } public static void main(String[] args) { int[] arr={1,3,5,2}; sequence(arr); printArray(arr); } }

    //优化可以使用boolean类型进行检测,如果在一次比较过程中未进行交换,则顺序已经排好。

    //优化之后源代码

    package com.company; import java.util.Arrays; public class Main { public static void sequence(int[] arr){ //对数组所有数进行排序; for (int k=0;k<arr.length-1;k++){ boolean isChange=false; for(int j = 1; j <arr.length-k; ++j) { if (arr[j-1]>arr[j]){ swap(arr,j-1,j); isChange=true; } } if(isChange==false) { //检测经过一次内循环后isChange是否改变,如果没改变则没有进行交换,直接返回; return; } } } public static void printArray(int[] array) { //遍历输出 for (int e : array) { System.out.print(e + " "); } } public static void swap(int[] arr,int a,int b){ //交换前后数值 int temp=arr[a]; arr[a]=arr[b]; arr[b]=temp; } public static void main(String[] args) { int[] arr={1,3,5,2}; sequence(arr); printArray(arr); } }
    Processed: 0.009, SQL: 8