使用c++编程实现插入排序算法
时间: 2024-09-11 10:06:31 浏览: 40
插入排序是一种简单直观的排序算法,它的工作原理类似于打扑克牌时整理手牌的方式。首先,我们假设数组的第一个元素已经是有序的。然后从第二个元素开始,遍历整个数组,将每个元素逐个插入到已经排好序的前面部分,直到整个数组有序。
以下是使用C++实现插入排序的一个基本示例:
```cpp
#include <iostream>
void insertionSort(int arr[], int n) {
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 = j - 1;
}
arr[j + 1] = key; // 插入关键值
}
}
// 测试函数
int main() {
int data[] = {64, 25, 12, 22, 11};
int n = sizeof(data) / sizeof(data[0]);
std::cout << "原始数组: ";
for (int i = 0; i < n; ++i)
std::cout << data[i] << " ";
insertionSort(data, n);
std::cout << "\n排序后的数组: ";
for (int i = 0; i < n; ++i)
std::cout << data[i] << " ";
return 0;
}
```
在这个例子中,`insertionSort`函数接受一个整数数组和它的大小作为参数。内部循环首先将当前元素存储在`key`中,然后比较`key`与前一个元素,如果前一个元素大于`key`,就将前一个元素向右移动一位。这个过程一直持续到找到一个比`key`小或者已到达数组开头的地方,然后将`key`插入到该位置。最后,`main`函数展示了排序前后的数组。
阅读全文