氣泡排序1
阿新 • • 發佈:2018-11-08
氣泡排序一:
可以利用這樣排序來排序:將第一個元素和它後面的元素比較大小,如果比後面的某個元素大,就將這兩個元素互換位置,直到最後一個元素,一輪排序完畢,獲得一個最小值在新陣列的第一位。接著再對第二個元素重複以上操作,這樣第二個元素也是除第一個元素之外最小的,一直到第n-1個元素,和第n個元素比較,如果小於n,結束迴圈,如果大於n,交換位置之後結束迴圈。
迴圈次數:(n-1)+(n-2)+……+1
package com.zzh; import java.util.Scanner; import javax.sound.midi.Soundbank; public classMain { //氣泡排序1 public static void main(String[] args) { Scanner scanner=new Scanner(System.in); int n=scanner.nextInt(); int[] num=new int[n]; int i,j,temp; for(i=0;i<n;i++) { num[i]=scanner.nextInt(); } for(i=0;i<n-1;i++) {for(j=i+1;j<n;j++) { if (num[i]>num[j]) { temp=num[i]; num[i]=num[j]; num[j]=temp; } } } for(i=0;i<n;i++) { System.out.print(num[i]+" "); } } }
氣泡排序二:
待排陣列:12 45 1 545 21 65 888
方法:將陣列中相鄰的元素兩兩比較,如果下標i的元素大於下標i+1的元素,則交換位置,一輪排序完成之後,陣列中的最大值挪到新陣列的最後,下標為n-1;新一輪排序的時候,依然從第一個元素到倒數第二個元素之間兩兩比較,得到一個最大值放在倒數第二位,這樣的話,經過n-1輪排序之後,即可獲得一個從小到大排序的新陣列
package com.company; import java.util.Scanner; import javax.sound.midi.Soundbank; public class Main { //氣泡排序1 public static void main(String[] args) { Scanner scanner=new Scanner(System.in); int n=scanner.nextInt(); int[] num=new int[n]; int i,j,k,temp; for(i=0;i<n;i++) { num[i]=scanner.nextInt(); } //接下來對陣列進行排序,一共要進行num.length-1輪排序 for(j=0;j<num.length-1;j++) { //從第一個元素到倒數第二個元素 for(i=0;i<n-1;i++) { if (num[i]>num[i+1]) { temp=num[i]; num[i]=num[i+1]; num[i+1]=temp; } } n--;//每一輪排序結束,最大值存在陣列末尾,所以下一輪排序的時候,n的值減1,減少比較次數 } for(j=0;j<num.length;j++) { System.out.print(num[j]+" "); } } }