4 已知数组A[7]中只存有6个数据,{1,28,55,21,64,15},请采用排序算法将数组中的转换为数据增量有序的数组。排序后,插入数据45且仍保持数组有序,请写出插入算法,并输出数组各元素。(30分)
时间: 2023-04-07 19:02:14 浏览: 89
可以回答这个问题。可以使用冒泡排序、选择排序、插入排序等算法,这里以插入排序为例:
1. 从数组的第二个元素开始,将该元素与前面的元素进行比较,如果该元素比前面的元素小,则将该元素插入到前面元素的位置上,同时将前面的元素后移一位。
2. 重复上述步骤,直到将所有元素都插入到合适的位置上。
插入算法的实现代码如下:
int A[7] = {1, 28, 55, 21, 64, 15};
int n = 6;
int i, j, temp;
// 插入排序
for (i = 1; i < n; i++) {
temp = A[i];
j = i - 1;
while (j >= 0 && A[j] > temp) {
A[j + 1] = A[j];
j--;
}
A[j + 1] = temp;
}
// 插入数据45
temp = 45;
j = n - 1;
while (j >= 0 && A[j] > temp) {
A[j + 1] = A[j];
j--;
}
A[j + 1] = temp;
// 输出数组各元素
for (i = 0; i <= n; i++) {
printf("%d ", A[i]);
}
输出结果为:1 15 21 28 45 55 64。
阅读全文