您的位置:首页 > 其它

常用算法之(插入排序)

2016-04-14 10:26 260 查看

什么叫插入排序?

有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序。

实现插入的基本思想是什么?

每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。

实现步骤

找到插入位置

将插入位置上的元素向后移。

将元素放入插入位置。

代码实现

void Insertsort (int a[], int n)  //由小到大的排序
{
int i, j, k;
for (i = 1; i < n; i++)  // 外侧循环实现插入的个数
{
// 为a[i]在'a[0]....a[i-1]'有序区间中找一个合适的位置
for (j = i - 1; j >= 0; j--)  // 从最大的元素开始比较。
if (a[j] < a[i])
break;

//插入位置为a[j]
if (j != i - 1)  //将比a[i]大的数据向后移
{

int temp = a[i];
for (k = i - 1; k > j; k--) /*有序区最后一个元素移到a[i]位置 以此类推*/
a[k + 1] = a[k];
a[k + 1] = temp;  //或者写为a[j] = temp 将a[i]放到正确位置上
}
}
}


时间复杂度为(n2)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: