插入排序 插入排序的基本思想是:从初始有序的子集合开始,不断地把新的数据元素插入到一排列有序子集合的合适位置上,使子集合中数据元素的个数不断增多,当子集合等于集合时,插入排序算法结束。常用的插入排序有直接插入排序和希尔排序两种。 直接插入排序
直接插入排序的基本思想是:顺序地把待排序的数据元素按其关键字值的大小插入到已排序数据元素子集合的适当位置。子集合的数据元素个数从只有一个数据元素开始逐次增大。当子集合大小最终和集合大小相同时排序完毕。
直接插入排序是一种稳定的排序算法。
直接插入排序过程:
初始关键字排序:[64] (5) 7 89 6 24
第一次排序结果:[5 64] (7) 89 6 24
第二次排序结果:[5 7 64] (89) 6 24
第三次排序结果:[5 7 64 89] (6) 24
第四次排序结果:[5 6 7 64 89] (24)
第五次排序结果:[5 6 7 24 64 89]
算法实现:
void InsertSort(int data[], int size)
{
int i, j;
int temp;
for (i = 0; i < size - 1; i++)
{
temp = data[i + 1];
j = i;
while (j > -1 && data[j] > temp)
{
data[j + 1] = data[j];
j--;
}
data[j + 1] = temp;
}
}
说明:排序系列的文章是我自己对排序算法的一个整理,部分文字摘抄自网络或者算法相关书籍,如有涉及版权问题,请联系theonegis@sina.cn。