设计函数void InsertSort的插入排序
时间: 2024-12-22 12:31:17 浏览: 3
插入排序算法
插入排序是一种简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。以下是设计一个名为`InsertSort`的插入排序函数的基本步骤:
```cpp
#include <iostream>
// 定义InsertSort函数,接收一个整数数组和数组长度作为参数
void InsertSort(int arr[], int n) {
// 遍历数组,从第二个元素开始
for (int i = 1; i < n; ++i) {
// 将当前元素arr[i]暂存为key
int key = arr[i];
// 将key从前向后比较,找到合适的位置并插入
int j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j]; // 将较大的元素向右移动一位
j--;
}
arr[j + 1] = key; // 插入键值到正确位置
}
}
// 测试函数
int main() {
int data[] = {5, 2, 4, 6, 1};
int size = sizeof(data) / sizeof(data[0]);
InsertSort(data, size);
// 输出排序后的数组
for (int i = 0; i < size; ++i)
std::cout << data[i] << " ";
return 0;
}
```
在这个例子中,`InsertSort`函数首先假设前i个元素已经排好序,然后将第i+1个元素与已排序的部分比较,如果发现比已排序的数字大,则逐个向右移动较大的元素,直到找到合适的位置并将新元素插入。
阅读全文