直接插入排序 改進演算法 折半插入排序

2021-05-28 12:17:09 字數 467 閱讀 9436

這種改進是從比較次數入手的,並沒用減少移動的次數

# include # define maxsize 20

typedef int keytype;

typedef struct

sqlist;

void createsqlist(sqlist &l)

l.length = n;

}void display(sqlist &l)

printf("\n");

}void insersort(sqlist &l)

else

}for (j=i-1; j>=high+1; --j)

l.r[high+1] = l.r[0];

printf("第%d趟排序結果為: ", i-1);

display(l); }

}int main(void)

直接插入排序和折半插入排序演算法

直接插入排序 insertion sort 的基本思想是 每次將乙個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子串行中的適當位置,直到全部記錄插入完成為止。設陣列為a 0 n 1 1.初始時,a 0 自成1個有序區,無序區為a 1.n 1 令i 1 2.將a i 併入當前的有序區a 0 i ...

插入排序(直接插入排序 折半插入排序和希爾排序)

所謂插入排序就是將乙個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子串行中,直到全部記錄插入完成。1.直接插入排序 假設在排序過程中,待排序表l 1 n 在某次排序過程中的某一時刻狀態如下 為了實現將元素l i 插入到已有序列的子串行l 1 i 1 中,需要執行以下操作 1 查詢l i 在l ...

直接插入排序與折半插入排序

首先看一下例子,將資料乙個個的插入到乙個列表中,插入後這個列表就排序好了 注意 這個列表是遞增的,而且記憶體空間已分配好,只是沒有填充真正的資料,如下 int insertsort mergetype l,int data for j l len 1 j 0 j else return 0 測試用例...