內排序:資料是放在記憶體中處理,排序時不涉及資料的內、外存交換,則稱之為內排序。
直接選擇排序的基本思想是:假定需要給n個資料元素排序,0≤i≤n-1.資料元素的序號從0到n-1.第i趟排序開始時,當前有序區為第0個元素到第i-1個元素,無序區為第i個元素到第n-1個元素。該趟排序則是從當前無序區中選出最小的資料元素,假定為第k個,將它與無序區的第乙個元素互換,使得有序區變為第0個到第i個,無序區變為第i+1個到第n-1個。因為每趟排序均使有序區中增加了乙個資料元素,且有序區中的資料元素均不大於無序區中的資料元素,所以進行n-1趟排序之後,有序區變為從第0個到第n-2個,無序區就剩下最後乙個元素(第n-1個元素)。也就是說,經過n-1趟排序之後,這n個資料元素已經按照遞增排列。
下面以乙個型別為自定義的日期型別的陣列的排序為例,演示直接選擇排序演算法。
public class testdate
//直接選擇排序的方法
public static void selectsort(mydate dates)
}//最小元素與該無序區第乙個元素進行交換
if(k!=i)
system.out.println("第"+i+"趟排序之後的順序:");
print(dates);
system.out.println("");}}
//列印方法
public static void print(mydate dates)}}
//自定義的日期類
class mydate
//比較方法
public int compare(mydate mydate){
return year>mydate.year ? 1
:yearmydate.month ? 1
:monthmydate.day ? 1
:day執行結果如下:
原始順序為
yeae-month-day: 2007-8-20
yeae-month-day: 2007-3-12
yeae-month-day: 2005-10-25
yeae-month-day: 2004-6-28
yeae-month-day: 2009-9-1
第0趟排序之後的順序:
yeae-month-day: 2004-6-28
yeae-month-day: 2007-3-12
yeae-month-day: 2005-10-25
yeae-month-day: 2007-8-20
yeae-month-day: 2009-9-1
第1趟排序之後的順序:
yeae-month-day: 2004-6-28
yeae-month-day: 2005-10-25
yeae-month-day: 2007-3-12
yeae-month-day: 2007-8-20
yeae-month-day: 2009-9-1
第2趟排序之後的順序:
yeae-month-day: 2004-6-28
yeae-month-day: 2005-10-25
yeae-month-day: 2007-3-12
yeae-month-day: 2007-8-20
yeae-month-day: 2009-9-1
第3趟排序之後的順序:
yeae-month-day: 2004-6-28
yeae-month-day: 2005-10-25
yeae-month-day: 2007-3-12
yeae-month-day: 2007-8-20
yeae-month-day: 2009-9-1
第4趟排序之後的順序:
yeae-month-day: 2004-6-28
yeae-month-day: 2005-10-25
yeae-month-day: 2007-3-12
yeae-month-day: 2007-8-20
yeae-month-day: 2009-9-1
排序演算法 直接選擇(Java實現)
直接選擇是簡單排序,演算法思想是從第乙個數字開始,與後面的每個數字進行比較,如果該數字小了,那麼就把兩數進行交換,這樣一輪下來第乙個數字肯定是最小的數字,然後第二個數字開始與後面的數字進行比較,思想是一樣的,這樣的話,第二小的數字就到了第二個位置,這樣依次類推,排序就完成了。來舉一組例子 這樣一組數...
排序演算法之直接選擇排序及Java實現
選擇排序 直接選擇排序,堆排序 交換排序 氣泡排序,快速排序 插入排序 直接插入排序,希爾排序 歸併排序 桶式排序 基數排序 選擇排序是一種簡單直觀的排序演算法,它的工作原理是每一次從待排序的資料元素中選出最小 或最大 的乙個元素,存放在序列的起始位置,直到全部待排序的資料元素排完。public c...
Java排序演算法 直接選擇排序
基本思想 直接選擇排序的基本操作就是每一趟從待排序的資料元素中選出最小 或最大 的乙個元素,順序放在已排好序的數列的最後,直到全部待排序的資料元素排完,它需要經過n 1趟比較。演算法不穩定,o 1 的額外的空間,比較的時間複雜度為o n 2 交換的時間複雜度為o n 並不是自適應的。在大多數情況下都...