排序算法(冒泡,选择,插入)

import java.util.Arrays;

public class SortTools {

    public static void bubbleSort(int[] arr) {
        int num1=0;
        int num2=0;
        int num3=0;
        boolean flag=false;
        for (int i = 0; i < arr.length-1; i++) {
            num1++;
            flag=false;
            for (int j = 0; j < arr.length-1-i; j++) {
                num2++;
                if (arr[j]>arr[j+1]) {
                    num3++;
                    swap(arr, j, j+1);
                    flag=true;
                }
            }
            if (!flag) {
                break;
            }
        }
        System.out.println("bubble排序次数:"+num1+" 比较次数:"+num2+" 改变位置次数:"+num3);
        System.out.println("bubble排序后结果:"+Arrays.toString(arr));
            
    }
    
    public static void selectSort(int[] arr) {
        int num1=0;
        int num2=0;
        int num3=0;
        for (int i = 0; i < arr.length-1; i++) {
            num1++;
            for (int j = 1+i; j < arr.length; j++) {
                num2++;
                if (arr[i]>arr[j]) {
                    num3++;
                    swap(arr, i, j);
                }
            }
        }
        System.out.println("select排序次数:"+num1+" 比较次数:"+num2+" 改变位置次数:"+num3);
        System.out.println("select排序后结果:"+Arrays.toString(arr));
    }
    
    public static void insertSort(int[] arr) {
        int num1=0;
        int num2=0;
        int num3=0;
        for (int i = 1; i < arr.length; i++) {
            int j=i-1;
            num1++;
            num2++;
            int val=arr[i];
            while(j>=0&&arr[j]>val) {
                num3++;
                arr[j+1]=arr[j];
                j--;
            }
            arr[j+1]=val;
        }
        System.out.println("insert排序次数:"+num1+" 比较次数:"+num2+" 改变位置次数:"+num3);
        System.out.println("insert排序后结果:"+Arrays.toString(arr));
    }
    
    
    private static void swap(int[] arr,int firstIndex,int secondIndex) {
        int temp=arr[firstIndex];
        arr[firstIndex]=arr[secondIndex];
        arr[secondIndex]=temp;
    }
    
}

 

posted on 2021-06-23 09:57  FlyHigner  阅读(37)  评论(0)    收藏  举报

导航