欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中的升序和降序問題

 更新時(shí)間:2022年11月25日 10:54:50   作者:劍小麟  
這篇文章主要介紹了Java中的升序和降序問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Java升序和降序

1.使用Arrays中的升序API(sort)進(jìn)行升序

代碼示例如下:

public class px {
    public static void main(String[] args) {
        int[] a={11,55,99,66,22,88,33};
        System.out.println(Arrays.toString(a));//打印原有數(shù)組
        Arrays.sort(a);
        System.out.println(Arrays.toString(a));//打印排序后的數(shù)組
    }
}

2.使用comparator接口設(shè)置升序和降序

comparator接口只能使用引用元素進(jìn)行排序,在該接口比較器中,當(dāng)進(jìn)行升序排序時(shí),如果認(rèn)為左邊數(shù)據(jù)大于右邊數(shù)據(jù)則返回正整數(shù),右邊大于左邊返回負(fù)整數(shù),相等返回0,這樣就能進(jìn)行一個(gè)完整的升序排序操作。降序排序則反之,左>右為返回負(fù)整數(shù),以此類推。

代碼示例如下,以升序?yàn)槔?/p>

package paixu;
 
import java.util.Arrays;
import java.util.Comparator;
public class px {
    public static void main(String[] args) {
        int[] a={11,55,99,66,22,88,33};
        System.out.println(Arrays.toString(a));
        Arrays.sort(a);
        System.out.println(Arrays.toString(a));
        Integer[] b={666,1,777,33,999,55,33};//引用類型的數(shù)組
        Arrays.sort(b,new Comparator<Integer>() {  //comparator接口
            @Override
            public int compare(Integer t, Integer t1) {
                if (t > t1) {        //升序排序操作
                    return 1;
                } else if (t < t1) {
                    return -1;
                }
                return 0;
        }
    });
        System.out.println(Arrays.toString(b));
    }
}

運(yùn)行結(jié)果如下:

而我們的comparator還有一種簡便方法來進(jìn)行排序操作,即無需在該接口中進(jìn)行if語句的判斷,而是將兩個(gè)值直接相減,以此來判斷正負(fù)值。

代碼示例如下,以降序?yàn)槔?/p>

package paixu;
 
import java.util.Arrays;
import java.util.Comparator;
public class px {
    public static void main(String[] args) {
//        int[] a={11,55,99,66,22,88,33};
//        System.out.println(Arrays.toString(a));
//        Arrays.sort(a);
//        System.out.println(Arrays.toString(a));
        Integer[] b={666,1,777,33,999,55,33};
        Arrays.sort(b,new Comparator<Integer>() {
            @Override
            public int compare(Integer t, Integer t1) {
 
                return t1-t;
        }
    });
        System.out.println(Arrays.toString(b));
    }
}

運(yùn)行結(jié)果如下:

升序和降序排序方法及原理

排序的思路是,冒泡排序是每一次取一個(gè)數(shù)與其它數(shù)進(jìn)行比較,如果你的數(shù)比另一個(gè)數(shù)大,兩個(gè)進(jìn)行位置交換,依次類推。

public class DemoMessage {
    public static void main(String[] arg) {
        int sortArr[] = new int[]{2, 1, 9, 0, 4, 5, 3, 7, 6, 8};
        sortArr(sortArr);
        //排序升序
        sort(sortArr);
        print(sortArr);
        //排序轉(zhuǎn)置
        reverse(sortArr);
        print(sortArr);
    }

    public static void sortArr(int arr[]) {
        System.out.println("原始數(shù)組:");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + "\t");
        }
    }

    //升序排序
    public static void sort(int arr[]) {
        //外層控制總體的排序次數(shù)
        for (int i = 0; i < arr.length; i++) {
            //內(nèi)層控制的排序次數(shù)
            for (int x = 0; x < arr.length - 1; x++) {
                if (arr[x] > arr[x + 1]) {
                    int t = arr[x];
                    arr[x] = arr[x + 1];
                    arr[x + 1] = t;
                }
            }
        }
        System.out.println();
    }

    public static void print(int temp[]) {
        System.out.println("排序數(shù)組:");
        for (int i = 0; i < temp.length; i++) {
            System.out.print(temp[i] + "\t");
        }
    }

    //轉(zhuǎn)置排序
    public static void reverse(int arr[]) {
        System.out.println("排序轉(zhuǎn)置:");
        //利用算法,在一個(gè)數(shù)組上完成所有的轉(zhuǎn)置操作
        //原始數(shù)據(jù):   1、2、3、4、5、6、7、8
        //第一次轉(zhuǎn)置:8、2、3、4、5、6、7、1
        //第二次轉(zhuǎn)置:8、7、3、4、5、6、2、1
        //第三次轉(zhuǎn)置:8、7、6、4、5、3、2、1
        //第四次轉(zhuǎn)置:8、7、6、5、4、3、2、1
        //轉(zhuǎn)換次數(shù):數(shù)組的長度除以2,它的長度是一個(gè)偶數(shù)
        //那么問題來了,如果是一個(gè)奇數(shù),
        //這就是問題,也就是說不管是一個(gè)偶數(shù)還是一個(gè)奇數(shù),轉(zhuǎn)軒換的次數(shù)完全是一樣的,所以不影響
        int len = arr.length / 2;//轉(zhuǎn)換次婁
        int head = 0;//開始索引
        int tail = arr.length - 1;//尾部索引
        for (int x = 0; x < len; x++) {
            int temp = arr[head];
            arr[head] = arr[tail];
            arr[tail] = temp;
            head++;
            tail--;
        }
    }
}

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring Data Jpa 自動生成表結(jié)構(gòu)的方法示例

    Spring Data Jpa 自動生成表結(jié)構(gòu)的方法示例

    這篇文章主要介紹了Spring Data Jpa 自動生成表結(jié)構(gòu)的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • java學(xué)習(xí)之理解自動拆裝箱特性

    java學(xué)習(xí)之理解自動拆裝箱特性

    這篇文章主要介紹java自動拆裝箱特性以及java自動拆裝箱的應(yīng)用,有需要的朋友可以借鑒參考下,希望可以有所幫助,祝大家早日升職加薪
    2021-09-09
  • Java socket通信模擬QQ實(shí)現(xiàn)多人聊天室

    Java socket通信模擬QQ實(shí)現(xiàn)多人聊天室

    Socket在Java實(shí)戰(zhàn)網(wǎng)絡(luò)通信編程應(yīng)用中有非常重要的作用,你想要跟別人聯(lián)系都得通過socket占據(jù)端口來實(shí)現(xiàn),掌握Socket技術(shù)不僅在聊天應(yīng)用程序中需要用到(比如QQ什么的都都是用socket來寫的),而且對于學(xué)習(xí) Asp.net 也非常有幫助
    2022-07-07
  • Spring?容器初始化?register?與?refresh方法

    Spring?容器初始化?register?與?refresh方法

    這篇文章主要介紹了Spring?容器初始化?register?與?refresh方法,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-07-07
  • Netty分布式ByteBuf的分類方式源碼解析

    Netty分布式ByteBuf的分類方式源碼解析

    這篇文章主要為大家介紹了Netty分布式ByteBuf的分類方式源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03
  • Java使用建造者模式實(shí)現(xiàn)辦理手機(jī)套餐功能詳解

    Java使用建造者模式實(shí)現(xiàn)辦理手機(jī)套餐功能詳解

    這篇文章主要介紹了Java使用建造者模式實(shí)現(xiàn)辦理手機(jī)套餐功能,較為詳細(xì)的描述了建造者模式的概念、原理并結(jié)合實(shí)例形式分析了Java使用建造者模式實(shí)現(xiàn)的辦理手機(jī)套餐功能具體步驟與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2018-05-05
  • Spring框架初始化解析

    Spring框架初始化解析

    這篇文章主要介紹了Spring框架初始化解析,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • Java easyexcel導(dǎo)出報(bào)內(nèi)存溢出的問題解決

    Java easyexcel導(dǎo)出報(bào)內(nèi)存溢出的問題解決

    在Java開發(fā)時(shí),使用EasyExcel處理大數(shù)據(jù)量導(dǎo)出可能遇到內(nèi)存溢出問題,本文深入分析了內(nèi)存溢出的原因,并提出了優(yōu)化策略,感興趣的可以了解一下
    2024-10-10
  • Java實(shí)現(xiàn)數(shù)據(jù)庫連接的最詳細(xì)教程分享

    Java實(shí)現(xiàn)數(shù)據(jù)庫連接的最詳細(xì)教程分享

    JDBC,Java?Database?Connectivity,即Java數(shù)據(jù)庫連接,是?Java?中的一套和數(shù)據(jù)庫進(jìn)行交互的API,本文就來講講Java如何利用JDBC實(shí)現(xiàn)數(shù)據(jù)庫的連接吧
    2023-05-05
  • java中g(shù)radle項(xiàng)目報(bào)錯(cuò)org.gradle?.api.plugins.MavenPlugin解決辦法

    java中g(shù)radle項(xiàng)目報(bào)錯(cuò)org.gradle?.api.plugins.MavenPlugin解決辦法

    在使用Gradle時(shí)開發(fā)者可能會遇到org.gradle?.api.plugins.MavenPlugin報(bào)錯(cuò)提醒,這篇文章主要給大家介紹了關(guān)于java中g(shù)radle項(xiàng)目報(bào)錯(cuò)org.gradle?.api.plugins.MavenPlugin的解決辦法,需要的朋友可以參考下
    2023-12-12

最新評論