在這裡用對陣列從小到大排序的例子來分析一下幾種常用的排序演算法:選擇排序、插入排序、希爾排序、歸併排序、快速排序
開始之前:
1、我們這裡以實現了comparable介面的資料為排序物件
2、兩個工具方法:判斷陣列中兩個元素乙個是否比另乙個小、互換陣列中兩個元素的值。實現如下:
public static boolean less(comparable comparables, int i, int j)
return false;
}
private static void exchange(comparable comparables, int i, int j)
1、選擇排序
選擇排序的思想是,每一次迴圈,從剩餘元素中取出最小的元素,放在已經排好序的陣列元素的末端,例如有陣列a,長度為length,第0次從a[0]...a[length-1]中取出最小的元素a[x],將a[x]和a[0]互換位置,第1次從a[1]...a[length-1]中取出最小的元素a[y],將a[y]和a[1]互換位置。也就是說,第i次從a[i]...a[length-1]中取出最小的元素和i處的元素互換位置,直到i為陣列的最後乙個元素為止。
**實現:
private static void sort1(comparable comparables)
}exchange(comparables, i, min);
}}
效能分析:
2、插入排序
插入排序可以模擬我們平時打撲克時候抓牌,每次新抓一張牌,將其插入到已經排好序的手中的牌組中。將這個過程抽象一下,那就是,桌子上的所有的牌就是我們待排序的陣列,每次抓一張牌,就相當於每次從陣列中取出乙個元素,將其插入到已經排好序的手中的牌組中,就相當於,將新抓的這張牌和手中的牌組進行比較,從手中牌組中最大的這張牌開始進行比較,如果比這張牌大,那麼放在其後邊,繼續抓牌,如果比這張牌小,放在其左邊,然後再跟前乙個元素進行比較,依次類推,直到新抓的這張牌遇到比它小的牌或者移動到手中牌組的起始位置為止。
**實現:
public static void insertcompare(comparable comparables)
}}
效能分析:
3、希爾排序
Java學習 幾種排序演算法的實現
1 選擇排序演算法 選擇排序演算法的思想 如乙個陣列 a 第一次把這個陣列中最小的元素和a 0 交換位置,變成 0,5,2,8,3 第二次把a 1 到a 4 這4個元素中最小的和a 1 交換位置,變成 0,2,5,8,3 第三次把a 2 到a 4 這3個元素中最小的和a 2 交換位置,變成 0,2,...
java實現常見的幾種排序演算法
public static void selectsort int array if i min public static void bubble int array if flag false public static void insertsort int numbers numbers j...
Java幾種排序演算法
陣列排序 author jrunner 2009 10 26 e main jrunner 126.com class testsort print a tosort1 a tosort2 a tosort3 a tosort4 a print a 方法一 更換值 private static vo...