[英]Add element in sorted array recursively in C
任务是以两种方式将元素插入每个矩阵行:迭代和递归。 我已经完成了迭代,但不明白如何将其更改为递归。 感谢任何帮助。 这是我的 function, n
- 行元素数, key
- 要在行中实现的值:
void insertSorted(int arr[], int n, int key)
{
int i;
for (i = n - 1; (i >= 0 && arr[i] > key); i--)
arr[i + 1] = arr[i];
arr[i + 1] = key;
}
这是代码:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define MAX 10
void insertSorted(int arr[], int n, int key)
{
int i;
for (i = n - 1; (i >= 0 && arr[i] > key); i--)
arr[i + 1] = arr[i];
arr[i + 1] = key;
}
int main()
{
int arr[MAX][MAX];
int row, col;
int i, key;
printf("Enter the matrix size:\nRows: ");
scanf("%d", &row);
printf("Cols: ");
scanf("%d", &col);
printf("\nEnter %dx%d matrix with sorted rows:\n", row, col);
for (int i = 0; i < row; i++)
for (int j = 0; j < col; j++)
scanf("%d", &arr[i][j]);
printf("\nBefore Insertion:\n");
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++)
printf("%d ", arr[i][j]);
puts(" ");
}
printf("\nEnter the number to insert in rows: ");
scanf("%d", &key);
for (int i = 0; i < row; i++)
insertSorted(arr[i], col, key);
col++;
printf("\nAfter Insertion:\n");
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++)
printf("%d ", arr[i][j]);
puts("");
}
return 0;
}
void RecursiveInsertSorted(int arr[], int n, int key)
{
if(n==0)
arr[n]=key;
return;
if(arr[n-1]>key){
arr[n]=arr[n-1];
RecursiveInsertSorted(arr,n-1,key);
}
else{
arr[n]=key;
return;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.