数组排序(逆序输出)

需求

有一整数数组,{1,3,-1,5,-2}; 将数据复制到新数组中 ,要求逆序输出新数组中的数,同时并将小于0的元素按0存储。

思路

还是for循环和if的嵌套,只不过这次要对新数组进行排序,同时也要把原来数组里的负数全部变成零存储到新数组里去.

代码

import java.util.Arrays;

/**
 * @Author: Bun
 * @Version: 1.0
 * @Date: 2022/9/24-15:09

 */
public class Test5 {
    public static void main(String[] args) {
        int[] oldArr = {1, 3, -1, 5, -2};

        for (int i = 0; i < oldArr.length; i++) {
            if (oldArr[i] < 0) {
                oldArr[i] = 0;
            }
        }
        System.out.println("排序前: " + Arrays.toString(oldArr));
        //排序
        for (int i = 0; i < oldArr.length - 1; i++) {
            for (int j = 0; j < oldArr.length - 1 - i; j++) {
                if (oldArr[j] < oldArr[j + 1]) {
                    int temp = oldArr[j + 1];
                    oldArr[j + 1] = oldArr[j];
                    oldArr[j] = temp;
                }
            }
        }
        System.out.println("排序后: " + Arrays.toString(oldArr));
    }
}

在C语言中,实现数组逆序输出有多种方法,以下为你介绍几种常见的实现方式: ### 方法一:使用简单的循环逆序输出 此方法先按顺序定义数组,再通过循环从数组末尾开始向前遍历,逐个输出元素。 ```c #include <stdio.h> int main() { int i = 0; // 定义数组 int arr[] = {0,1,2,3,4,5,6,7,8,9}; // 逆序输出 for(i = 9; i >= 0; i--) { printf("arr[%d]=%d\n", i, arr[i]); } return 0; } ``` 这种方法的思路是直接从数组的最后一个元素开始,依次向前输出每个元素,直到第一个元素。 ### 方法二:通过函数实现数组逆序输出 此方法将数组逆序的逻辑封装在函数中,在`main`函数中调用该函数。 ```c #include <stdio.h> void order(int arr[], int x) { for (int i = 0; i < x; i++) { for (int j = i + 1; j < x; j++) { if (arr[i] <= arr[j]) { int k = arr[i]; arr[i] = arr[j]; arr[j] = k; } } } for (int i = 0; i < x; i++) { printf("%d ", arr[i]); } } int main() { int x = 0; scanf("%d", &x); int arrs[1000]; for (int i = 0; i < x; i++) { scanf("%d", &arrs[i]); } order(arrs, x); return 0; } ``` 这里在`order`函数中,通过两层循环对数组元素进行比较和交换,实现逆序排序输出。 ### 方法三:交换数组元素实现逆序 此方法通过交换数组的首尾元素,逐步向中间靠拢,实现数组逆序。 ```c #include <stdio.h> #include <string.h> #define Max 200 void reserve(char *s, int s_size) { char temp; for(int i = 0, j = s_size; i <= j; i++, j--) { temp = s[i]; s[i] = s[j]; s[j] = temp; } } int main() { char s[Max]; while(gets(s)) { int len = strlen(s); reserve(s, len - 1); puts(s); } return 0; } ``` 在`reserve`函数中,使用`temp`变量暂存元素,将数组首尾元素交换,直到遍历到数组中间位置。 ### 方法四:用户输入数组逆序输出 此方法允许用户输入数组的长度和元素,然后将数组逆序输出。 ```c #include "stdio.h" int main() { int arr[100]; int num; printf("请输入数组长度:"); scanf("%d", &num); printf("请输入数组:"); for(int i = 0; i < num; i++) { scanf("%d", &arr[i]); } for(int k = 0; k < num / 2; k++) { int temp = arr[k]; arr[k] = arr[num - 1 - k]; arr[num - 1 - k] = temp; } for(int i = 0; i < num; i++) printf("%d ", arr[i]); return 0; } ``` 先让用户输入数组长度和元素,接着通过交换元素的方式将数组逆序,最后输出逆序后的数组
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值