帮我写一个插入法uint16_t类型数组的排序函数
时间: 2024-09-15 07:10:31 浏览: 39
插入排序是一种简单直观的排序算法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增加1的有序表。对于`uint16_t`类型的数组排序,我们同样可以使用插入排序算法。以下是一个插入排序函数的示例代码,用于对`uint16_t`类型的数组进行排序:
```c
#include <stdint.h>
void insertionSort(uint16_t arr[], int n) {
int i, j;
uint16_t key;
for (i = 1; i < n; i++) {
key = arr[i]; // 当前要插入的元素
j = i - 1;
// 将arr[i]插入到已排序的序列arr[0...i-1]中
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j]; // 若前一个元素大于当前元素,后移
j = j - 1;
}
arr[j + 1] = key; // 插入元素到正确位置
}
}
// 使用示例
int main() {
uint16_t array[] = {10, 7, 8, 9, 1, 5};
int n = sizeof(array) / sizeof(array[0]);
insertionSort(array, n);
// 打印排序后的数组
for (int i = 0; i < n; i++) {
printf("%u ", array[i]);
}
return 0;
}
```
这段代码定义了一个`insertionSort`函数,它接受一个`uint16_t`类型的数组和数组的长度作为参数,并将数组从小到大排序。在`main`函数中,我们创建了一个`uint16_t`类型的数组并调用`insertionSort`函数对其进行排序,然后打印排序后的结果。
阅读全文