一、直接插入排序
插入排序像我們打撲克牌時,將牌直接插入相應位置。
實現**如下
void
insertsort
(int
*array,
int n)
else
break;}
array[index +1]
= tmp;
//打牌時插入牌時,是直接插入到指定位置
//此時位置已近確定 ,該位置放置這個數字
}}
直接插入排序的特性總結:
元素集合越接近有序,直接插入排序演算法的時間效率越高
時間複雜度:o(n^2)
空間複雜度:o(1),它是一種穩定的排序演算法
穩定性:穩定
二、希爾排序
希爾排序法又稱縮小增量法。希爾排序法的基本思想是:先選定乙個整數,把待排序檔案中所有記錄分成個組,所有距離為的記錄分在同一組內,並對每一組內的記錄進行排序。然後,取,重複上述分組和排序的工作。當到達=1時,所有記錄在統一組內排好序。
實現**
void
shellsort
(int
*parray,
int n)
else
break;}
parray[end + gap]
= tmp;
} gap--;}
}
希爾排序的特性總結:
希爾排序是對直接插入排序的優化。
當gap > 1時都是預排序,目的是讓陣列更接近於有序。當gap == 1時,陣列已經接近有序的了,這樣就會很快。這樣整體而言,可以達到優化的效果。我們實現後可以進行效能測試的對比。
希爾排序的時間複雜度不好計算,需要進行推導,推導出來平均時間複雜度: o(n1.3—n2)
穩定性:不穩定
希爾排序的理解和實現 Java
希爾排序 shell sort 這個排序方法又稱為縮小增量排序,是1959年d l shell提出來的。該方法的基本思想是 設待排序元素序列有n個元素,首先取乙個整數increment 小於n 作為間隔將全部元素分為increment個子序列,所有距離為increment的元素放在同乙個子串行中,在...
python實現氣泡排序 原理解析
def bubble sort nums for i in range len nums 1 這個迴圈負責設定氣泡排序進行的次數 for j in range len nums i 1 j為列表下標 print 比較 j,j 1 if nums j nums j 1 nums j nums j 1 ...
堆排序演算法的理解與實現
public static void heapsort int arr public static void heapinsert int arr,int index 交換函式 public static void swap int arr,int l,int r public static voi...