用JAVA實現排序算法之一:冒泡排序

    最近一段時間在努力學習回顧JAVA方面的相關知識,這其中涉及到了幾種常用的排序算法。筆者雖知用JAVA實現簡單的排序算法早已不是什麼新鮮事,類似的實現更是多如牛毛,而筆者在這裏之所以老調重彈,最基本的出發點無非就是鞏固已學知識,夯實基礎罷了。所以,在這裏,筆者將不厭其煩地使用JAVA實現幾種常用的排序算法,包括冒泡排序、插入排序、選擇排序、快速排序和希爾排序等。本篇文章介紹的是冒泡排序算法。

    冒泡排序算法的基本思想是:首先將第n-1個記錄的關鍵字和第n個記錄的關鍵字進行比較,若爲“逆序”(即L.r[n].key<L.r[n-1].key),則將兩個記錄交換之,然後比較第n-2個記錄和第n-1個記錄的關鍵字。依次類推,直至第1個記錄的關鍵字和第2個記錄的關鍵字比較過爲止。這是第一趟起泡排序,其結果是使得關鍵字最小的記錄被安置到第一個記錄的位置上;然後進行第二趟起泡排序,對後面的n-1個記錄進行同樣的操作,其結果是使關鍵字次小的記錄被安置到第2個記錄的位置;一般地,第i趟起泡排序是從L.r[n] 到L.r[i]依次比較相鄰兩個記錄的關鍵字,並在“逆序”時交換相鄰記錄,其結果是這n-i+1個記錄中關鍵字最小的記錄被交換到第i的位置上。整個排序過程需要進行K(1≤k<n)趟起泡排序,顯然,判別起泡排序結束的條件應該是“在一趟排序過程中沒有進行過交換記錄的操作”。

    以下是冒泡排序的JAVA代碼實現:

package cn.simon.sort; public class BubbleSort { public static <T extends Comparable<? super T>> void bubbleSort(T[] array) { for (int i = 0; i < array.length; i++) { for (int j = array.length - 1; j > i; j--) { if (array[j].compareTo(array[j - 1]) < 0) { T temp = array[j]; array[j] = array[j - 1]; array[j - 1] = temp; } } } } public static void main(String[] args) { Integer[] testArray = {23, 25, 12, 42, 35}; BubbleSort.bubbleSort(testArray); System.out.println("The result is:"); for (Integer item : testArray) { System.out.print(item); System.out.print(' '); } } }  

發佈了91 篇原創文章 · 獲贊 88 · 訪問量 40萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章