從一堆無序的元素中(後半部分) 找乙個出來,插入到乙個有序的序列中(按照大小找到合適的位置)。
插入排序的思想是,假定第乙個元素已經排好序了,後面的元素依次往裡插。首先,第二個元素與乙個元素比較,如果第二個元素小,就交換位置,下一次輪詢,第二個元素與第三個元素比較,如果第三個元素小,就交換位置,接著,再比較第二個元素和第乙個元素,把小的放在前面。
//插入排序
public
void
insertionsort
(int
array)}}
}
思考:
插入排序和選擇排序有點像,但還是不一樣。選擇排序找到的最小值,那是真正的最小值,每次輪詢有序序列會不斷擴大。而插入排序每次輪詢得到的最小值,是暫定的最小值,只要沒有完成排序過程,絕不敢保證這個值就是最小的。
插入排序的每次輪詢,沒有遍歷到陣列的全部元素,只是部分元素,但它能夠保證它遍歷到的部分元素是有序的,因此每次輪詢,陣列中元素會從前往後變得越來越有序。
希爾排序是插入排序的一種改進版,也有人稱為(最小增量排序),在原有插入排序的基礎上 進行了隊伍的分組,每乙個小組各自進行自己組內的插入排序。
//希爾排序
public
void
shellsort
(int
array)}}
group = group/2;
}}
插入排序 希爾插入排序
本文借鑑於lsgo實驗室創始人馬老師 演算法 希爾插入排序 delta len nums 2 while delta 0 shell delta,nums delta delta 2return nums defshell delta,key for i in range delta,len key...
插入排序 希爾排序
我們知道當乙個序列基本有序時,直接插入會變得很高效。因為此時只需少量的移動元素,操作集中在元素的比較上。基於這種想法,我們就試圖把乙個序列在進行直接插入前調整得盡量有序。這就是希爾排序 shell sort 的核心思路。shell只是演算法發明者的名字,無特殊含義 那到底該怎麼做呢?希爾排序一反以前...
插入排序 希爾排序
希爾排序 先將整個待排序的記錄序列分割成為若干子串行分別進行直接插入排序,待整個序列中的記錄 基本有序 時,再對全體記錄進行依次直接插入排序。以n 10的乙個陣列49,38,65,97,26,13,27,49,55,4為例 第一次 gap 10 2 5 4938 6597 2613 2749554 ...