java實現 排序演算法 插入排序,希爾排序

2021-08-22 06:20:57 字數 1123 閱讀 2763

中心思想:

每次拿出乙個數和已經排序好的一組數比較,假設a= , 比如在i=3時:a[0]~a[2]已經排好序為[10,16,25],這時要插入a[3]這個數,先和a[2]比較也就是25比較,如果大於25則直接插入在index=3這個位置,如果小於,則讓25向後移一位也就是在index=3的位置 , 準備把index=2的位置給a[3]這個數 , 因為最少也會在index=2這個位置 , 然後拿a[3]與a[1]比較 , 小於 , 則a[1]這個數也向後移一位 , 在index=2的位置,讓位給大佬 , 大佬和a[0]比較 , 大於 , 則跳出比較 , 站好a[2]讓出的index=2的位置

private

static

void

insertsort(int a)

a[j + 1] = a[j];

}a[j + 1] = temp;}}

中心思想:確定要比較幾次 , 也就是要分別比較多少間隔 , 根據數學就是先是取間隔為length/2,之後就是length/2/2直到間隔沒有 , 也就是index差值為1 , 對10個數的陣列來說就是先是index差值是5的兩個數相互比較 , 然後是差值是3的 , 然後是差值是1的(就是相鄰的數) , 當進行一輪比較的時候 , 先拿後半段的第乙個數和前半段第乙個數比較也就是間隔所在數 , 不符合大小相對位置的就交換 , 然後拿後半段第二個數和前半段第二個數比較….這裡實現的很巧妙 , 用乙個for迴圈來控制j的取值 , 當後數大於前數時 , 跳出迴圈 , 這時j=i-gap,然後執行 a[j+gap]=temp;相當於a[i]=temp;也就是保持不變 , 如果後數小於前數 , 則將前數賦值給後數字置 , 而後執行j=j-gap , 之後再執行 a[j+gap]=temp;相當於a[j]=temp;將後數值賦值給前數字置

排序演算法 插入排序(Java實現)

直接插入排序是指從第二個數字開始從後往前插入,將當前數字依次與前面的數字進行比較,到最後乙個數字完成了依次比較整個排序也就完成了。這個過程可以理解為在玩打牌遊戲的時候,插牌的過程。我們知道這個排序需要兩個迴圈,外層迴圈就是從第二個數字開始向後遍歷,而內層迴圈就是把外層迴圈的當前數字與前面的數字依次比...

Java實現插入排序演算法

插入排序適用於有初步排序的序列。對於乙個n元素的序列而言,最好的情況是序列已經是公升序排列的了,只需要比較n 1次 最壞的情況是初始序列逆序,那麼將進行n n 1 2次比較,即插入排序演算法複雜度最好為 o n 最差跟平均為 o n 2 以字串的形式讀入乙個整數序列,轉換後以插入排序實現公升序排列 ...

java實現插入排序演算法

主要思想就是從第二個元素開始,依次和前面的元素比較,如果比前面的元素小則將元素依次向後移位,給需要插入的元素騰出空間。與選擇排序類似的是當前索引左邊的所有元素都是有序的,但是它們最終的位置不確定,因為後面可能還會出現更小或更大的元素。所以為了給更小或更大的元素騰出空間,它們隨時都可能被移動。如果到達...