JAVA排序演算法 直接插入排序和希爾排序

2021-08-28 04:51:22 字數 864 閱讀 4854

1.直接插入排序演算法

原理:

插入排序就是將無序數列的第乙個元素與有序數列的元素從後往前逐個進行比較,找出插入位置,將該元素插入到有序數列的合適位置中。

具體演算法實現:

因此其具體演算法實現即找到未排序的第乙個資料(哨兵)。然後將其與前面的已排序值比較,找到插入的位置j,將j到哨兵間的元素後移一位,再將哨兵值賦給j處。

其實現如下:

public static void sort(int arr)

arr[j]=tem;//將原來i處的值賦給j處}}

2.希爾排序

希爾排序就是將整個待排序的記錄序列分割成為若干子串行分別進行直接插入排序, 待整個序列中的記錄「基本有序」時,再對全體記錄進行依次直接插入排序。從而減少挪位次數。

其演算法實現是利用增量思想,逐漸增加排序範圍。

public static void sort(int data) {

int j = 0;

int temp = 0;

for (int inc = data.length / 2; inc > 0; inc /= 2)//每次講增量變為原來一半

for (int i = inc; i < data.length; i++) {//對每個小序列進行插入排序,當inc變為1時,對整體進行插入排序

temp = data[i];

for (j = i; j >= inc&&temp

附:常見演算法複雜度表

Java排序演算法 直接插入排序

基本思想 直接插入排序的基本操作是將乙個記錄插入到已經排好的有序表中,從而得到乙個新的 記錄數增1的有序表。對於給定的一組記錄,初始時假定第乙個記錄自成乙個有序序列,其餘記錄為無序序列。接著從第二個記錄開始,按照記錄的大小依次將當前處理的記錄插入到其之前的有序序列中,直到最後乙個記錄插到有序序列中為...

java演算法 直接插入排序

話不多說,直接上 package sort public class sorttest seqlist seqlist new seqlist 20 for int i 0 i d.length i seqlist.display seqlist.insertsort seqlist.insert ...

java插入排序 直接插入排序

直接插入排序演算法思路是 待排序記錄 r1,r2,rn 1,rn 第一步 將無序表打第乙個元素作為乙個有序表。第二步 將r2加入到有序表中,使有序表依舊有序 第 n 步 r1,r2,rn 1 rn 以此類推。直接插入排序演算法的時間複雜度,最好的情況是待排序記錄是有序的,o n 最壞打情況是記錄從大...