程序检查数组是否在C中排序(迭代和递归)
给定一个具有n个元素的数组arr [],我们的任务是检查给定数组是否按排序顺序排列;如果按排序顺序,则打印“数组按排序顺序”;否则打印“数组按排序顺序”排序不正确”。
为了解决上述问题,我们可以使用迭代或递归方法,我们将同时讨论两者。
递归方法
那么,什么是递归方法?在递归方法中,我们一次又一次地递归调用一个函数,直到获得理想的结果。在递归方法中,函数返回的值存储在堆栈存储器中。
输入值
arr[] = {12, 13, 14, 16, 18}
输出结果
The array is in sorted order
说明-12 <13 <14 <16 <18,所以,是的,数组已排序
输入值
arr[] = {2, 1, 3, 5, 6}
输出结果
The array is not in sorted order
说明-2不小于1,因此不是按排序顺序。
以下使用的方法来解决问题-
以数组arr []作为输入,并使用数组的大小初始化n。
检查我们是否到达数组的开头,返回true。
检查数组的前一个元素是否不小于下一个元素,返回false。
递减n并转到步骤2。
算法
StartIn function int arraySortedCheck(int arr[], int n)
Step 1→ If n == 1 || n == 0 then,
Return 1
Step 2→ If arr[n-1] < arr[n-2] then,
Return 0
Step 3→ Return arraySortedCheck(arr, n-1)
In Function int main(int argc, char const *argv[])
Step 1→ Declare and initialize arr[] as {1,8,3,4,7}
Step 2→ Declare and initialize int n as sizeof(arr)/sizeof(arr[0])
Step 3→ If arraySortedCheck(arr, n) then,
Print "Array is in sorted order”
Step 4→ Else
Print "Array is not in sorted order”
Stop
示例
//Recursive approach#include <stdio.h>
//递归函数检查是否
//是否按排序顺序
int arraySortedCheck(int arr[], int n){
//检查所有元素,然后
//都按排序顺序
if (n == 1 || n == 0)
return 1;
//当数组未排序时
if(arr[n-1] < arr[n-2])
return 0;
return arraySortedCheck(arr, n-1);
}
int main(int argc, char const *argv[]){
int arr[] = {1,8,3,4,7};
int n = sizeof(arr)/sizeof(arr[0]);
if(arraySortedCheck(arr, n)){
printf("Array is in sorted order\n");
}
else
printf("Array is not in sorted order\n");
return 0;
}
输出结果
如果运行上面的代码,它将生成以下输出-
Array is in sorted order
迭代法
在迭代方法中,我们使用诸如for循环,while循环或do-while循环之类的循环来执行语句,直到条件成立为止,即1。
输入值
arr[] = {12, 13, 14, 16, 18}
输出结果
The array is in sorted order
说明-12 <13 <14 <16 <18,所以,是的,数组按排序顺序
输入值
arr[] = {2, 1, 3, 5, 6}
输出结果
The array is not in sorted order
解释2不小于1,因此不是按排序顺序。
解决问题的方法如下
输入arr []。
循环直到我们到达该数组的末尾。
检查当前元素是否不小于下一个元素,返回false并退出。
否则继续。
转到步骤2。
算法
StartIn function int arraySortedCheck(int arr[], int n)
Step 1 → Loop For i = 0 and i < n and ++i
If arr[n-1] < arr[n-2] then,
Return 0
Step 2→ Return 1
In Function int main(int argc, char const *argv[])
Step 1→ Declare and initialize arr[] as {1,8,3,4,7}
Step 2→ Declare and initialize int n as sizeof(arr)/sizeof(arr[0])
Step 3→ If arraySortedCheck(arr, n) then,
Print "Array is in sorted order”
Step 4→ Else
Print "Array is not in sorted order”
Stop
示例
//Iterative approach#include <stdio.h>
int arraySortedCheck(int arr[], int n){
for (int i = 0; i < n; ++i){
//当数组未排序时
if(arr[n-1] < arr[n-2])
return 0;
}
//检查所有元素,然后
//都按排序顺序
return 1;
}
int main(int argc, char const *argv[]){
int arr[] = {1,8,3,4,7};
int n = sizeof(arr)/sizeof(arr[0]);
if(arraySortedCheck(arr, n)){
printf("Array is in sorted order\n");
}
else
printf("Array is not in sorted order\n");
return 0;
}
输出结果
如果运行上面的代码,它将生成以下输出-
Array is in sorted order
以上是 程序检查数组是否在C中排序(迭代和递归) 的全部内容, 来源链接: utcz.com/z/343344.html