直接插入排序:
算法思想:首先认为文件第一个数据是有序的,依次扫描后面的数据,将其插入到前面已经有序的数据区段内,使之有序。
代码实现(C++):
1
void InsertSort(SeqList R, int n)
2
{
3
4
for(int i=1; i<n; i++) // 默认第一个数据有序,依次遍历从第2个数据之后的数据
5
{
6
j=0;
7
while(j<i) // 找到R[i]的插入位置
8
{
9
if(R[i]<R[j]) // R[i]从j=0开始的R[j]进行比较,小于当前遍历的数据时,
10
// 就停止循环,此时j便是R[i]该插入的位置
11
break;
12
j++; // 如果R[i]大于当前遍历的数据R[j],则j自加,继续遍历后面的数据
13
}
14
15
while(j<i) // 插入R[i]到指定位置
16
{
17
swap(R[i], R[j++]); // 将在R[i]插入位置j之后的数据依次往后移
18
}
19
}
20
}