前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java笔记-数组排列

Java笔记-数组排列

作者头像
HCG_Sky
发布2022-03-31 21:24:09
4430
发布2022-03-31 21:24:09
举报
文章被收录于专栏:HCG_Sky's Blog

排列数组?不换数组咱也能排!

前言

今晚又迎来了每周我并不期待的Java编程课 如往常一样,带着电脑自己敲自己的,他讲他的哈哈哈 讲到数组排列时,看了一下,他讲的实在方法太复杂,血压上去了,我就也上去了2333 奈何众目睽睽之下,手抖、冒汗、思绪混乱、还是给讲砸了,所以在这记录一下,但就是不服!欸,就是不服~

既然不服,那我们就拉出来讲一讲! 下面我们来看看吧~

咱先分析一下

要想排序第一步就是比较嘛,那么该怎么比呢?掏出我的小黑板待我为你一一道来。

明确流程

 通过上面的分析,我们可以知道,这时候数组中最大的值已经在第一位了,那么我们要做的就是以此类推,逐步找出第二大的第三大的数。最终实现数组的排列!

 通俗点讲就是军训排队高的往前矮的往后,先拿排头第一个人和后面的人都比一次,每找到一个比他高的就换位,然后换上来的接着比,必到最后一名为止,这个时候这队第一个就已经是队伍里最高的了,然后从第二个人开始用同样的方法进行比较

话不多说我们上代码

 第一步先搞明白我们怎么换位置,以a、b两个值为例将其互换数值

代码语言:javascript
复制
int a = 6;
int b = 8;

int x = a;    //定义一个变量先暂存a的值
int a = b;    //将b的值赋给a
int b = x;    //再将保存在x里的a的值赋值给b

 接着来搞明白我们要如何实现这种方式相同但是变量不同的重复性工作。假设一列人有9个,每个人都要进行比较,9个人也就是要进行9次,我们在这把他看成一个for;每个人又要和每次比较剩下的人逐一对比、换位,在这我们把他看成for中之for,也就是我们说的嵌套

代码语言:javascript
复制
int[] arr = {888,99,2,33,21,533,3566,213};    //题目数组

for (int i = 0;i < arr.length;i++) {            //定义第一层for
    for (int u = i;u < arr.length;u++) {        //定义第二层for
                                            //u = i是为了排除上一次比较中
    }                                        //已经确定位置的数值再参加比较            
}

 写到这里,我们已经解决了工作重复性的问题,接下来就是将比较和换位环节放进去即可,那么比较和换位怎么实现呢,这里我们用到if语句和我们上面讲的数据互换

代码语言:javascript
复制
int[] arr = {888,99,2,33,21,533,3566,213};    //题目数组

if (arr[i] < arr[u]) {
    int x = arr[i];
    arr[i] = arr[u];
    arr[u] = x;
}
//以上是实现比较和换位的代码
======================================================================
//合并起来就是
int[] arr = {888,99,2,33,21,533,3566,213};    //题目数组

for (int i = 0;i < arr.length;i++) {
    for (int u = i;u < arr.length;u++) {
        if (arr[i] < arr[u]) {        //进行比较
            int x = arr[i];            //如果条件成立数据位置互换
            arr[i] = arr[u];
            arr[u] = x;
        }
    }                                                
}

 到此,整体的需求我们就都实现了,最后我们进行输出结果即可

代码语言:javascript
复制
int[] arr = {888,99,2,33,21,533,3566,213};    //题目数组

for (int i = 0;i < arr.length;i++) {
    for (int u = i;u < arr.length;u++) {
        if (arr[i] < arr[u]) {        //进行比较
            int x = arr[i];            //如果条件成立数据位置互换
            arr[i] = arr[u];
            arr[u] = x;
        }
    }                                                
}

for(int o = 0;o < arr.length;o++){
    System.out.println(arr[o]);
}

 到这我们排列好的数组就出现啦!!!

写在最后

 无它,就是觉得有简便的方法不用那不是费力不讨好么?咱要学就要学最好的!

直接运行的代码

↓代码要格式化,大家也不要例外哦↓

代码语言:javascript
复制
public class Test {
    public static void main(String[] args) {
        int[] arr = {888,99,2,33,21,533,3566,213};    //题目数组

        for (int i = 0;i < arr.length;i++) {
            for (int u = i;u < arr.length;u++) {
                if (arr[i] < arr[u]) {        //进行比较
                    int x = arr[i];            //如果条件成立数据位置互换
                    arr[i] = arr[u];
                    arr[u] = x;
                }
            }
        }

        for(int o = 0;o < arr.length;o++){
            System.out.println(arr[o]);
        }
    }
}

效果

废话少说

快去提升吧哈哈

本篇文章采用 署名 4.0 国际 (CC BY 4.0) 许可协议进行许可。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-11-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • 咱先分析一下
      • 明确流程
        • 话不多说我们上代码
          • 写在最后
          • 直接运行的代码
          • 效果
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档