排序之直接插入排序 拆半插入排序 希爾排序

2021-10-23 03:41:21 字數 1162 閱讀 9674

原理:

將待排序的元素可以分為兩個區間

有序區間

無序區間

迴圈遍歷待排序區間,每次從陣列中取出乙個元素,將該元素與有序區間進行比較,放入它應該在的位置。

**實現:

//1、找待插入資料  在前面已經排好的序列中的位置;

//2、插入元素

public void insertsort(int arr)

arr[end+1] = key;}}

效能分析:穩定性:穩定

} // 搬移

for (int j = i; j > left; j--)

array[left] = v;

} }原理:希爾排序法又稱縮小增量法。希爾排序法的基本思想是:先選定乙個整數,把待排序檔案中所有記錄分成個組,所有距離為的記錄分在同一組內,並對每一組內的記錄進行排序。然後,取,重複上述分組和排序的工作。當到達=1時,所有記錄在統一組內排好序。

希爾排序是對直接插入排序的優化。

當gap > 1時都是預排序,目的是讓陣列更接近於有序。當gap == 1時,陣列已經接近有序的了,這樣就會很快。這樣整體而言,可以達到優化的效果。

**實現:

public static void shellsort(int array) 

insertsortgap(array, 1);

} private static void insertsortgap(int array, int gap)

array[j+gap] = v;

} }

效能分析:穩定性:不穩定。

插入排序之直接插入排序

插入排序概述 有乙個已經有序的資料序列,要求在這個已經排好的資料序列中插入乙個數,但要求插入後此資料序列仍然有序,這個時候就要用到一種新的排序方法 插入排序法,插入排序的基本操作就是將乙個資料插入到已經排好序的有序資料中,從而得到乙個新的 個數加一的有序資料,演算法適用於少量資料的排序,時間複雜度為...

插入排序之直接插入排序

依次將每個記錄 無序表 插入到乙個已排好序的有序表中,得到乙個新的,記錄增加1的有序表 向撲克牌中插入新牌,圖書館整理圖書 有n個數,將第乙個數看做乙個有序表,從第二個開始從後向前比較,第一趟比較前兩個數,然後把第二個數按大小插入到有序表中 第二趟把第三個資料與前兩個數從後向前掃瞄,把第三個數按大小...

插入排序之直接插入排序

packagesort.algorithm publicclassdirectinsertsort inttemp,j for int i 1 i data.length i data j 1 temp 輸出排序好的資料 for int k 0 k data.length k 直接插入排序,一般對於...