1. 程式人生 > 其它 >排序演算法(冒泡,選擇,插入)

排序演算法(冒泡,選擇,插入)

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; } }