写一个直接插入法排序函数利用该函数对数组a按从小到大的次序并显示最终结果 a中元素类型是int或double
时间: 2024-02-01 08:14:07 浏览: 21
以下是一个C++示例代码,实现了直接插入排序算法:
```cpp
#include <iostream>
using namespace std;
void insertionSort(int arr[], int n) {
int i, key, j;
for (i = 1; i < n; i++) {
key = arr[i];
j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j = j - 1;
}
arr[j + 1] = key;
}
}
int main() {
int a[] = { 5, 3, 8, 4, 2 };
int n = sizeof(a) / sizeof(a[0]);
insertionSort(a, n);
cout << "Sorted array: ";
for (int i = 0; i < n; i++)
cout << a[i] << " ";
return 0;
}
```
如果要对double类型的数组排序,只需要将函数参数类型改为double即可:
```cpp
void insertionSort(double arr[], int n) {
int i, j;
double key;
for (i = 1; i < n; i++) {
key = arr[i];
j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j = j - 1;
}
arr[j + 1] = key;
}
}
```
注意,在使用double类型时,排序的比较操作应该使用浮点数比较函数,如std::fabs(),以避免由于浮点数精度问题导致的错误。