排序演算法之插入排序

2021-08-21 15:37:22 字數 1063 閱讀 4420

插入排序是一種簡單直觀的排序方法,基本思想:每次將乙個待排序的記錄,按其 關鍵字大小插入到前面已經

排好序的子串行中,直到全部記錄插入完成。

插入排序分為直接插入排序、折半插入排序、希爾排序。

直接插入排序:

public static int insertsort(int array)

else

}newarray[j+1] = tmp;

} return newarray;

}

穩定性:由於每次插入元素時總是從後向前比較再移動,所以不會出現相同元素相對位置發生變化的情況,即

直接插入排序是一種穩定的排序方法。

適用性:適用於順序儲存和鏈式儲存的線性表。當為鏈式儲存時,可以從前往後查詢指定元素的位置。

折半插入排序:

public static int insertsort(int array)

else if (newarray[mid] < tmp) // 查詢右半子表

else

}// 統一後移元素,空出插入位置

for (int j=i-1; j>high; j--)

newarray[j+1] = newarray[j];

newarray[high+1] = tmp;

} return newarray;

}

折半插入排序減少了比較元素的次數,約為o(nlog2n)。它仍然是乙個穩定的排序演算法。

希爾排序:

public int shellsort(int array)}}

}system.out.println("增量d:"+ d + " " +arrays.tostring(newarray));

if (d < 2)

d -= 1;

} return newarray;

}

希爾排序是乙個不穩定的排序方法,僅適用於當線性表為順序儲存的情況。

排序演算法之插入排序

排序演算法之插入排序 1 插入排序的思想 假設在乙個有序序列中 e 0 e i 1 這i 個元素已經排好序,則當要將第 i 1個元素 e 插入該序列時,只需將第 i 1個元素與從 e 0 開始到e i 1 元素進行比較,當發現第 j個元素 e j 在序列中應在 e 前,且 e j 1 應在e 後時,...

排序演算法之插入排序

排序演算法之插入排序 1 插入排序的思想 假設在乙個有序序列中 e 0 e i 1 這i 個元素已經排好序,則當要將第 i 1個元素 e 插入該序列時,只需將第 i 1個元素與從 e 0 開始到e i 1 元素進行比較,當發現第 j個元素 e j 在序列中應在 e 前,且 e j 1 應在e 後時,...

排序演算法之插入排序

本節主要分析插入排序演算法的直接插入排序和希爾 shell 排序 又稱縮小增量排序 1.直接插入排序 該排序是最簡單的排序方法,其基本思想是 假設待排序的記錄存放在陣列r 1.n 中。初始時,r 1 自成1個有序區,無序區為r 2.n 從i 2起直至i n為止,依次將r i 插入當前的有序區r 1....