pta简化的插入排序c++
时间: 2024-12-07 21:14:11 浏览: 89
好的,我很乐意为您介绍简化版的插入排序算法,并提供C++的实现代码。
插入排序是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。简化版的插入排序通常指的是基本的插入排序算法,而不是一些优化版本如二分插入排序等。
以下是简化版插入排序的C++实现:
```cpp
#include <iostream>
#include <vector>
using namespace std;
void insertionSort(vector<int>& arr) {
int n = arr.size();
for (int i = 1; i < n; ++i) {
int key = arr[i];
int j = i - 1;
// 将大于key的元素向后移动一位
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j--;
}
// 插入key到正确的位置
arr[j + 1] = key;
}
}
int main() {
vector<int> arr = {12, 11, 13, 5, 6};
insertionSort(arr);
cout << "排序后的数组: ";
for (int i : arr) {
cout << i << " ";
}
cout << endl;
return 0;
}
```
这段代码的工作原理如下:
1. 我们定义了一个`insertionSort`函数,它接受一个整数向量作为参数。
2. 外层循环从第二个元素开始遍历数组(索引1)。
3. 对于每个元素,我们将其值存储在`key`中,并初始化一个`j`变量指向当前元素的前一个位置。
4. 内层while循环将所有大于`key`的元素向后移动一位。
5. 最后,我们将`key`插入到正确的位置。
6. 这个过程重复进行,直到整个数组有序。
7. 在`main`函数中,我们创建了一个整数向量,调用`insertionSort`函数进行排序,然后输出排序后的结果。
这个算法的平均时间复杂度为O(n^2),其中n是数组的长度。虽然它的效率不如一些更高级的排序算法(如快速排序或归并排序),但它的实现简单,对于小规模数据集来说已经足够高效。
阅读全文
相关推荐















