理解 實現排序

2021-10-06 01:57:45 字數 1151 閱讀 7478

一、直接插入排序

插入排序像我們打撲克牌時,將牌直接插入相應位置。

實現**如下

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...