以下是使用C语言编写的直接插入排序算法,并附带了一个简单的测试函数:
```c
#include
// 直接插入排序函数
void insertionSort(int arr[], int n) {
int i, j, temp;
for (i = 1; i < n; i++) {
temp = arr[i]; // 临时保存待插入元素
j = i - 1; // 从前一个元素开始
// 如果前一个元素比当前元素大,就将前一个元素后移
while (j >= 0 && arr[j] > temp) {
arr[j + 1] = arr[j];
j--;
}
// 将临时保存的元素插入到正确位置
arr[j + 1] = temp;
}
}
// 测试函数
void testInsertionSort() {
int arr[] = {12, 11, 13, 5, 6, 7};
int n = sizeof(arr) / sizeof(arr[0]);
printf("原始数组: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
insertionSort(arr, n);
printf("排序后的数组: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
int main() {
testInsertionSort();
return 0;
}
```
运行这段代码,你将看到`testInsertionSort`函数中的整数数组`arr`被直接插入排序算法排序前后的输出。排序后的数组将以升序排列。