编程初学者入门10_输入一个整数序列,判断是否是有序序列,有序,指序列中的整数从小到大排序或者从大到小排序。(C/C++的break跳出几层循环?、Java实现Arrays.sort()排序数组)

本文介绍了一种通过双标记法来判断整数序列是否为升序或降序的方法,并提供了C++及Java两种语言的实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

输入一个整数序列,判断是否是有序序列,有序,指序列中的整数从小到大排序或者从大到小排序。

  • 输入描述:
    第一行输入一个整数N(3≤N≤50)。
    第二行输入N个整数,用空格分隔N个整数。

  • 输出描述:
    输出为一行,如果序列有序输出sorted,否则输出unsorted。

  • 我的解答

注意题干的要求是判断是否有序,包括 升序、降序(注意 1,1,1,1 也是有序的

基本思路就是 需要设置两个标记,分别用来判断 升序、降序

我采用上下两个嵌套循环,上面嵌套循环 比较相邻的 元素 判断 是否升序,下面同理判断是否降序

需要注意的点:

  • 两层嵌套循环,内层使用break,只能跳出内层循环(之前一直不清楚),本题需要 外部也设break
  • 比较相邻元素的时候,一定要包含 ==的情况
  1. C++代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int len,arr_num,flag_sheng = 0,flag_ni = 0;
    cin>>len;
    int arr[len];
    for(int i = 0;i<len;i++){
        cin>>arr_num;
        arr[i] = arr_num;
        
    }
	//判断升序
    for(int i = 0;i<len;i++){
        for(int j = i+1;j<len;j++){
            if(arr[i] <= arr[j])
                flag_sheng = 1;
            
            else{
                flag_sheng = 0;
                break;
            }
         
        }
        //跳出外层循环,否则易出现后面的正确顺序,而flag 又重新赋值为 1 
        if(flag_sheng == 0)
            break;
    }
    //判断降序
    for(int i = 0;i<len;i++){
        for(int j = i+1;j<len;j++){
            if(arr[i] >= arr[j])
                flag_ni = 1;
            
            else{
                flag_ni = 0;
                break;
            }
                
        }
        //跳出外层循环,否则易出现后面的正确顺序,而flag 又重新赋值为 1 
        if(flag_ni == 0)
            break;
        
    }
    if(flag_sheng ==1 || flag_ni == 1 )
        cout<<"sorted"<<endl;
    else
        cout<<"unsorted"<<endl;
    
    
 
    
}
  1. Java实现代码

Java就是利用 另一个排序后的数组(需要引入新数组) 和 输入的数组 遍历比较

import java.util.Scanner;
import java.lang.*;
import java.util.Arrays;

public class Main{
    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);
        int len = sc.nextInt();
        int flag_sheng = 1,flag_ni = 1;
        //输入的数组,和新的放排序后元素的数组
        int [] arr = new int[len];
        int [] arr_sort = new int[len];
        
        for(int i = 0;i<len;i++){
            arr[i] = sc.nextInt();
            arr_sort[i] = arr[i];
        }
        //对输入的数排序
        Arrays.sort(arr_sort);
        //循环对比
        for(int i = 0;i<len;i++){
            if(arr_sort[i] != arr[i])
                flag_sheng = 0;
            if(arr_sort[len -1 - i] != arr[i])
                flag_ni = 0;
                
        }
        if(flag_ni == 1 || flag_sheng == 1)
            System.out.println("sorted");
        else
            System.out.println("unsorted");
        
        
            
        
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

scl、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值