直接插入排序 C++实现

来源:互联网 发布:透明罗盘软件下载 编辑:程序博客网 时间:2024/06/05 21:23
直接插入排序:

算法思想:首先认为文件第一个数据是有序的,依次扫描后面的数据,将其插入到前面已经有序的数据区段内,使之有序。
代码实现(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
}