氣泡排序和選擇排序
阿新 • • 發佈:2018-12-20
** – **冒泡和選擇排序演算法的測試 雖然不難但在細節方面有時候會在交換位置時出錯,這一塊一定得細心。 程式碼如下:
class Sorts { public static void main(String[] args) { long beginTime=0; long endTime=0; int[] ar={8,9,6,2,7,3,1,74,12,36,94,55,77,61,24,76,34,22,68,69}; System.out.println(" 排序前:"); PrintArr(ar); System.out.println(); System.out.println("氣泡排序:"); beginTime=System.currentTimeMillis(); BubbleArr(ar); System.out.println(); endTime=System.currentTimeMillis(); System.out.print("氣泡排序執行的時間為:"+(endTime-beginTime)+" ms"); System.out.println(); System.out.println("選擇排序"); beginTime=System.currentTimeMillis(); ChooseSort(ar); System.out.println(); beginTime=System.currentTimeMillis(); System.out.print("選擇排序執行的時間為:"+(endTime-beginTime)+" ms"); } //遍歷方法 public static void PrintArr(int[] arr){ for(int a:arr) System.out.print(a+" "); } //選擇排序 public static void ChooseSort(int[] arr){ for(int i=0;i<arr.length-1;i++){ for(int j=i+1;j<arr.length;j++ ) { if(arr[i]>arr[j]) { //容易錯的地方, arr[j]而不是**arr[j+1]** int tmp=arr[i]; arr[i]=arr[j]; arr[j]=tmp; } } } //遍歷 PrintArr(arr); } //冒泡方法 public static void BubbleArr(int[] arr){ for(int i=0;i<arr.length-1;i++){ for(int j=0;j<arr.length-1-i;j++){ if(arr[j]>arr[j+1]) { //交換資料 這裡需要注意細節容易出錯* int tmp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=tmp; } } } //遍歷陣列 PrintArr(arr); } }
時間上看不出來效率 應該是資料不夠大的原因。