Java改进的冒泡排序ImprovedBubbleSort
生活随笔
收集整理的這篇文章主要介紹了
Java改进的冒泡排序ImprovedBubbleSort
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原理:冒泡排序需要遍歷幾次數組,每次遍歷都要比較相鄰的元素,如果某一對降序則互換他們的值,由于較小的值像“氣泡”一樣浮向頂部,較大的值沉向底部,所以叫冒泡排序。
實例演示:
一般冒泡排序的特點是:n個數總共要比較(遍歷)n-1趟,第i趟要比較n-i次。
一般程序是:
注意!!!:可以看到如果某次遍歷沒有發生交換,嗎么就不必進行下一次遍歷,因為所有的元素已經有序了。改進算法效率可以如下:
public static void bubbleSort(int[] list){int n=list.length;boolean NeedNextPass=true;for(int i=1;i<n&&NeedNextPass;i++){//總共比較n-1趟,如果某趟遍歷中沒有交換,那么不需要下次遍歷,因為元素以排好NeedNextPass=false;for(int j=0;j<n-i;j++){//第i趟比較n-i次if(list[j]>list[j+1]){int temp;temp=list[j];list[j]=list[j+1];list[j+1]=temp; NeedNextPass=true;}}}}一般代碼是:
public class BubbleSort {//冒泡排序public static void bubbleSort(int[] list){int n=list.length;for(int i=1;i<n;i++){//總共比較n-1趟for(int j=0;j<n-i;j++){//第i趟比較n-i次if(list[j]>list[j+1]){int temp;temp=list[j];list[j]=list[j+1];list[j+1]=temp; }}}}public static void main(String args[]){int[] list={2,1,56,34,9,6,55,20,37,22}; System.out.println("排序前的list是:");for(int i=0;i<list.length;i++){System.out.print(list[i]+" ");}bubbleSort(list);//進行冒泡排序System.out.println();System.out.println("排序后的list是:");for(int i=0;i<list.length;i++){System.out.print(list[i]+" ");}} }改進代碼是:
public class BubbleImprovedSort {//冒泡排序public static void bubbleSort(int[] list){int n=list.length;boolean NeedNextPass=true;for(int i=1;i<n&&NeedNextPass;i++){//總共比較n-1趟,如果某趟遍歷中沒有交換,那么不需要下次遍歷,因為元素以排好NeedNextPass=false;for(int j=0;j<n-i;j++){//第i趟比較n-i次if(list[j]>list[j+1]){int temp;temp=list[j];list[j]=list[j+1];list[j+1]=temp; NeedNextPass=true;}}}}public static void main(String args[]){int[] list={2,1,56,34,9,6,55,20,37,22}; System.out.println("排序前的list是:");for(int i=0;i<list.length;i++){System.out.print(list[i]+" ");}bubbleSort(list);//進行冒泡排序System.out.println();System.out.println("排序后的list是:");for(int i=0;i<list.length;i++){System.out.print(list[i]+" ");}} }總結
以上是生活随笔為你收集整理的Java改进的冒泡排序ImprovedBubbleSort的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java实现斐波那契数列Fibonacc
- 下一篇: 线程池ThreadPoolExcutor