java计算一整数组前n项是否按降序排列
需求分析
编写具有如下函数原型的递归与非递归两种函数f,负责判断数组a的前n个元素是否从大到小完全有序了;
输入的形式:任意一个数组的数值;
输出值范围及其形式:返回数组是否已经排好了序;
程序所能达到的功能:判断数组是否从大到小排序;
测试的数据:
5.2 概要设计
本题的主要思路:首先分别构造一个递归与非递归算法的函数,通过这两个函数判断所输入的数组是否按从大到小排序。是返回true,否则返回false。
5.3 详细设计与编码
见源程序
5.4 调试分析
调试过程中,递归算法比较简单,而非递归得把原问题分解成若干个相同功能的小问题来求解。要体现递归算法的思想。
5.5 用户使用说明
用户根据程序的提示输入适当的值。
5.6 测试数据
5.7 设计心得
通过此次实验,我或许对递归算法有了一定的了解,因为以前学C语言的时候,对递归算法的实现过程总有点模糊,但通过这个自己编的例子,我对递归算法有了一定的认识,同时也提高了我对编程的热爱。
import java.io.*;
import java.util.*;
class Sort
{
public static void main(String[] args)
{
System.out.print("/*************************************************\n\n"+
"File name: 软件设计课程设计基础题14(基础题14.java)\n\n"+
"Author: 计06-1 郭献铮 Date: 08.11.23\n\n"+
"Description: 递归与非递归判断数组是否从大到小排好序;\n\n"+
"Function List: // 主要函数列表,每条记录应包括函数名及功能简要说明\n\n"+
"1.main()函数 完成各种提示与主操作输入输出\n\n"+
"2.f1()函数 非递归算法判断数组是否从大到小排好序;\n\n"+
"3.f2()函数 递归算法判断数组是否从大到小排好序;\n\n"+
"*****************************************************/\n\n");
System.out.print("请输入数组的长度:");
Scanner in=new Scanner(System.in); //创建一个数组来存放要比较的各个数;
int n=in.nextInt();
int[] a=new int[n];
for(int i=0;i<n;++i)
{
System.out.print("请输入第"+(i+1)+"个数:");
in=new Scanner(System.in);
a[i]=in.nextInt();
}
System.out.println();
System.out.println("采用非递归算法");
if(f1(a,n))System.out.println("已经从大到小递归排序");
else System.out.println("未从大到小递归排序");
System.out.println();
System.out.println("采用递归算法");
if(f2(a,n))System.out.println("已经从大到小递归排序");
else System.out.println("未从大到小递归排序");
}
static boolean f1(int[] a,int n) //非递归算法的实现
{
for(int i=0;i<n;++i)
for(int j=0;j<i;++j)
原文请找腾讯752018766辣,文-论'文.网http://www.751com.cn/ 的实现
{
if(n==1) return true;
if(n>1)
{
int min=a[0];
for(int i=1;i<n-1;++i)
if(a[i]<a[0])min=a[i];
if(a[n-1]>min)return false;
}
return f2(a,n-1);