请用c++写一个在数组插入一个数并排列
时间: 2023-08-31 20:31:28 浏览: 119
用C++实现插入排序的算法
### 回答1:
在 C 语言中插入一个数并排列可以这样写:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
void insert(int* arr, int* n, int x) {
if (*n == MAX_SIZE) {
printf("Error: Array is full!\n");
return;
}
int i = *n;
while (i > 0 && arr[i-1] > x) {
arr[i] = arr[i-1];
i--;
}
arr[i] = x;
(*n)++;
}
int main() {
int arr[MAX_SIZE], n = 0, x;
printf("Enter the elements of the array, separated by space: ");
while (scanf("%d", &x) == 1) {
insert(arr, &n, x);
}
printf("Sorted array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
这段代码实现了插入一个数并将整个数组按照升序排序。
首先,定义了一个名为insert的函数, 用于向数组中插入新元素并将数组按升序排序。
插入一个数并将整个数组按照升序排列。
其中,n 是数组中元素的个数,MAX_SIZE 是数组的最大长度,x 是要插入的数,arr 是数组。
在 main 函数中,用户可以输入数组元素,在输入时每输入一个元素就会调用 insert 函数将其插入并排序。最后输出排好序的数组.
### 回答2:
下面是一个使用C语言编写的将一个数插入数组并进行排序的示例代码:
```c
#include <stdio.h>
void insertAndSort(int arr[], int n, int num) {
int i, j;
// 找到插入位置
for(i=0; i<n; i++) {
if(arr[i] > num) {
break;
}
}
// 将插入位置后的元素依次后移
for(j=n-1; j>=i; j--) {
arr[j+1] = arr[j];
}
// 插入新的数
arr[i] = num;
// 数组长度加一
n++;
// 冒泡排序
for(i=0; i<n-1; i++) {
for(j=0; j<n-i-1; j++) {
if(arr[j] > arr[j+1]) {
int tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmp;
}
}
}
// 输出排序后的数组
printf("排序后的数组:");
for(i=0; i<n; i++) {
printf("%d ", arr[i]);
}
}
int main() {
int arr[] = {1, 3, 5, 7, 9};
int n = sizeof(arr) / sizeof(arr[0]);
int num;
printf("请输入要插入的数:");
scanf("%d", &num);
insertAndSort(arr, n, num);
return 0;
}
```
运行示例:
```
请输入要插入的数:4
排序后的数组:1 3 4 5 7 9
```
以上代码定义了一个`insertAndSort`函数,接收一个整型数组`arr`,数组长度`n`和一个要插入的数`num`,将`num`插入到`arr`中合适的位置,然后使用冒泡排序对数组进行排序。最后在`main`函数中,我们构建了一个初始有序的数组`arr`,从键盘输入一个数`num`,并调用`insertAndSort`函数对数组进行插入和排序操作,然后输出排序后的数组。
### 回答3:
在C语言中,可以使用以下代码实现在数组中插入一个数并排列:
```c
#include <stdio.h>
void insertAndSort(int arr[], int size, int num) {
// 扩展数组大小
size++;
int temp[size];
// 复制原数组到临时数组
for (int i = 0; i < size - 1; i++) {
temp[i] = arr[i];
}
// 插入新数
temp[size - 1] = num;
// 对临时数组进行排序
for (int i = 0; i < size; i++) {
for (int j = i + 1; j < size; j++) {
if (temp[i] > temp[j]) {
int tempNum = temp[i];
temp[i] = temp[j];
temp[j] = tempNum;
}
}
}
// 将排列后的数据复制回原数组
for (int i = 0; i < size; i++) {
arr[i] = temp[i];
}
}
int main() {
int arr[] = {1, 3, 5, 7, 9};
int size = sizeof(arr) / sizeof(arr[0]);
int num = 4;
printf("插入前的数组:");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
insertAndSort(arr, size, num);
printf("插入后的数组:");
for (int i = 0; i < size + 1; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
代码首先定义了一个名为`insertAndSort`的函数,接受三个参数:一个整型数组、数组的大小和待插入的新数。在函数内部,首先扩展数组的大小,然后将原数组复制到临时数组中。接下来,将新数插入到临时数组的末尾位置。之后,使用简单的冒泡排序对临时数组进行升序排列。最后,将排列后的数据复制回原数组中。
在`main`函数中,我们定义一个初始数组`arr`和待插入的新数`num`,并调用`insertAndSort`函数进行插入和排序操作。最后,打印插入前和插入后的数组。运行程序后,输出如下:
```
插入前的数组:1 3 5 7 9
插入后的数组:1 3 4 5 7 9
```
这样就实现了在数组中插入一个数并完成排序的功能。
阅读全文