常见内部排序算法对比分析及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)