這種改進是從比較次數入手的,並沒用減少移動的次數
# 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 測試用例...