排序是计算机程序设计中一种重要的操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个按关键字有序的序列。
我们之前所熟知的大概是冒泡排序,选择排序,但相对来说,这两种方法的效率不是太高,在这篇文章中我简单的介绍下直接插入排序。
直接插入排序是一种简单的排序方法,它的基本操作是将一个记录插入到已排好的有序表中,从而得到一个新的.记录数增一的有序表。
例如:一直待排序的一组记录的初始排列如下 所示:
R(49), R(38), R(97), R(76), R(13), R(27)……
假设在排序过程中,前4个记录已按关键字递增的次序重新排列,构成一个含有4个记录的有序序列:{R(38), R(49), R(65), R(97)}先要将上面的初始序列的第五个记录插入到这个已拍好的记录中,则首先要在一排好序中进行查找以确定R(76)所应插入的位置,然后插入。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
void
Dir_Sort(Sqlist L)
{
int
i, j;
for
(i = 2; i < L.length; i++)
{
if
(LT(L.r[i].data, L.r[i-1].data))
{
L.r[0] = L.r[i];
L.r[i] = L.r[i-1];
for
(j = i-2; LT(L.r[0].data, L.r[j].data); j--)
{
L.r[j+1] = L.r[j];
}
L.r[j+1] = L.r[0];
}
}
for
(i = 1;i <= L.length; i++)
printf
(
"%d "
,L.r[i].data);
printf
(
"\n"
);
}
|
本文转自 驿落黄昏 51CTO博客,原文链接:http://blog.51cto.com/yiluohuanghun/879937,如需转载请自行联系原作者