初級排序演算法

2022-08-30 12:51:08 字數 2051 閱讀 5318

排序模板

public class example 

private static boolean less(comparable v, comparable w)

private static void exch(comparable a, int i, int j)

private static void show(comparable a)

public static boolean issorted(comparable a)

public static void main(string args)

}

首先找到最小的那個元素,其次,將它和陣列第乙個元素交換位置,再次,

在剩下的元素中找到最小的元素,將它與陣列的第二個元素交換,直到整個陣列排序

特點

執行時間和輸入無關:乙個已經有序的陣列或是主鍵全部相等的陣列和乙個元素隨機排列的陣列所用的排序時間一樣長;

資料移動是最少的:每次交換都會改變兩個陣列元素的值,因此選擇排序用了 n 次交換——交換次數和陣列的大小是線性關係。其他演算法大多都是線性對數或是平方級別。

直接插入與選擇排序一樣,當前索引左邊的所有元素都是有序的,但它們的最終位置還不確定。為了給更小的元素騰出空間,它們可能會向右移動。當索引到達陣列的右端時,陣列排序就完成了。

二分法插入排序

二分法定位插入的位置

public void sort_2(int arr)  else 

}//迴圈結束,元素應該在low 位置

for (int j = i - 1; j >= low; j--)

arr[low] = temp;

}}

特點
查入排序堆部分有序的陣列十分高效,也適合小規模陣列

與選擇排序不同的是,排序所需的時間取決於輸入元素中的初始化順序

比較
插入排序不會訪問索引右側元素,而選擇排序不會訪問索引左側元素

出發點直接插入排序在以下情況下高效

思想

//演算法4例子

public static void sort(comparable a)

while (h >= 1)

} h = h / 3;//縮小增量 }}

希爾排序是一種基於插入排序的快速的排序演算法,為了加快速度簡單地改進了插入排序,交換不相鄰的元素以對陣列的區域性進行排序,並最終用插入排序將區域性有序的陣列排序。

特點

簡單的計算增量和複雜的計算增量的效能接近。

希爾排序不同於*選擇* *插入* 可以作用於大型陣列,對任意排序的陣列表現也很好

初級排序演算法

回顧之前學習的各種排序演算法,從初級到高階,包括選擇排序,氣泡排序,插入排序,希爾排序,快速排序,歸併排序,堆排序等等,持續更新中 注 這裡實現的演算法都是遞增排序,也就是從小到大排序。思想 首先,找到陣列中最小的那個元素,其次,將它和陣列的第乙個元素交換位置 如果第乙個元素就是最小元素那麼它就和自...

初級排序演算法(二)

1.選擇排序的遞迴實現 public static void choosesortrecursion int arr public static void recursion int arr,int index recursion arr,index 選擇排序是從位置0開始選擇最小的元素,每個位置的...

演算法之初級排序

講排序之前先來幾個簡單的函式 交換函式 public static void swap comparable a,int i,int j 小於函式 public static boolean less comparable v,comparable w 首先找到陣列中的最小元素,將它和陣列的第乙個元...