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。
算法
Start
In 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>
//Recursive function to check if it
//is in sorted order or not
int arraySortedCheck(int arr[], int n){
//all elements are checked and
//all are in sorted order
if (n == 1 || n == 0)
return 1;
//when an array is not in sorted order
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
");
}
else
printf("Array is not in sorted order
");
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。
算法
Start
In 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){
//when an array is not in sorted order
if(arr[n-1] < arr[n-2])
return 0;
}
//all elements are checked and
//all are in sorted order
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
");
}
else
printf("Array is not in sorted order
");
return 0;
}输出
如果运行上述代码,它将生成以下输出:
Array is in sorted order
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C编程
C++
C#
MongoDB
MySQL
Javascript
PHP