常见内部排序算法对比分析及C++ 实现代码

时间:2021-07-19 16:39:46   收藏:0   阅读:0

内部排序是指在排序期间数据元素全部存放在内存的排序。外部排序是指在排序期间全部元素的个数过多,不能同时存放在内存,必须根据排序过程的要求,不断在内存和外存之间移动的排序。本次主要介绍常见的内部排序算法。

技术图片

1. 直接插入排序

直接插入排序的算法思想是把待排序序列a[n]中的n个元素看作是一个有序表和无序表。开始时有序表中只包含第一个元素a[0],无序表中包含n-1个元素a[1]~a[n-1],排序过程中每次从无序表中拿出第一个元素,把它插入有序表的适当位置,使之成为新的有序表,有序表中的元素个数加1。这样经过n-1次插入后,无序表变成空表,有序表中包含了全部n个元素,排序完毕。直接插入排序算法的实现代码如下:

void DirectInsertSort(vector<int>& arr)
{
    int i, j;
    for (i = 1; i < arr.size(); i++)
    {
        if (arr[i] < arr[i - 1])    //判断是否需要重新排序,否则保留原位置
        {
            int temp = arr[i];      //待插入元素
            for (j = i - 1; j >= 0 && temp < arr[j]; j--) arr[j + 1] = arr[j];    //逆序寻找插入位置,同时将大于待插入元素右移
            arr[j + 1] = temp;
        }
    }
}

2. 折半插入排序

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!