排序演算法(冒泡,選擇,插入)
阿新 • • 發佈:2021-06-23
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; } }