關於希爾演算法的理解以及兩種不同的移動方式

2021-07-05 04:45:05 字數 935 閱讀 6064

希爾演算法從實質上來說是一種改良後的插入演算法,通過比較分組後組外的數,使乙個數能夠跨越過多個數實現插入, 即一次插入可以消除多個元素值的互動,這一點其實是通過冒泡法來說的 演算法先將要排序的一組數按某個增量d分成若干組,每組中記錄的下標相差d.對每組中全部元素進行排序,然後再用乙個較小的增量對它進行,在每組中再進行排序。當增量減到1時,整個要排序的數被分成一組,排序完成,

作者主要基於對希爾演算法的理解,寫出的排序方法,算不上原創,只是起到加深印象的作用。

package cn.book.exercise;

/*** @author administrator 希爾演算法

*         

*/public class shellinserttest ;

system.out.println("未排序前");

for (int i = 0; i < data.length; i++)

shellsort(data);

system.out.println("\n排序後");

for (int i = 0; i < data.length; i++)

system.out.print(data[i] + " ");

}static void shellsort(int array) else

}array[j] = temp;

}if (distance == 1) }

/************************上文其實已經排序好,這裡再寫另外一種希爾排序方法,主要是移動的方向相反*************************/

distance = array.length;//復原

while (true) else

}array[j] = temp;

}if (distance == 1) }}

}

EM演算法的兩種理解角度

最近在學習機器學習這門課,目前學到了em演算法的部分。在網上看到了一些人比較好的理解。在此記錄下來 em演算法即 期望極大演算法 學過機器學習的朋友都知道em演算法分兩步 e步求期望,m步求極大。但是期望是求誰的期望,極大是求誰的極大呢?這裡面其實有兩種解讀角度。通俗角度的話,求極大肯定是求似然函式...

兩種堆疊的理解

堆 堆是一顆完全二叉樹,優先佇列,根節點的值大於 小於 子節點。堆是一種經過排序的樹形資料結構,每個結點都有一值。通常我們所說的堆的資料結構,是指二叉堆。堆的特點是根結點的值最小 或最大 且根結點的兩個子樹也是乙個堆。由於堆的這個特性,常用來實現優先佇列,堆的訪問是隨意,這就如同我們在圖書館的書架上...

兩種不同的盒模型

邊框 border 外邊距 margin 內邊距 padding 元素的邊框就是圍繞在內容和內邊距的一條或多條線,它的屬性是border 邊框有三個屬性值1.寬度 2.樣式 3.顏色 border width style color 寬度樣式 solid 實線 dashed 虛線 dotted 點狀...