Java学习第四天(方法重载与排序)

目录

一、代码

二、知识点

1、方法重载

2、排序方法

2.1起泡排序法 例sort

2.2快速排序法 例fsort(重载mode可以控制从大到小或从小到大)

2.3插入排序法 例csort

                        


一、代码

public class FastSort {
    public static void main(String[] args) {
        int[] a = {546,4,54,21,4,54,5,21,54,5,121,54};
        fsort(a);
        coutIntToString(a);
    }
    public static void camp(int[] a,int pos1,int pos2){//交换数据
        int temp;
        temp = a[pos1];
        a[pos1] = a[pos2];
        a[pos2] = temp;
    }
    public static void sort(int[] a){//从大到小
        for(int j = 1;j<a.length;j++)
            for(int i = 0;i<a.length-j;i++)
                if(a[i]<a[i+1])camp(a,i,i+1);
    }

    /**
     *
     * @param a 需要进行排序的数组
     * @param l 排序的左区间
     * @param r 排序的右区间
     */
    public static void fsort(int[] a,int l,int r){//从大到小
        if(l>r) return;
        int base = a[l];
        int i = l;
        int j = r;
        while (i != j){
            while (a[j]>=a[l]&&i<j)   j--;
            while (a[i]<=a[l]&&i<j)   i++;
            if(i < j) camp(a,j,i);
        }
        camp(a,l,i);

        fsort(a,l,i-1);
        fsort(a,i+1,r);
    }

    /**
     * @param a 需要进行排序的数组
     */
    public static void fsort(int[] a){//从大到小
        int base = a[0];
        int i = 0;
        int j = a.length-1;
        while (i < j){
            while (a[j]>=a[0]&&i<j)   j--;
            while (a[i]<=a[0]&&i<j)   i++;
            if(i < j) camp(a,j,i);
        }
        camp(a,0,i);
        if(0>=a.length-1) return;
        fsort(a,0,i-1);
        fsort(a,i+1,a.length-1);
    }

    /**
     *
     * @param a 需要进行排序的数组
     * @param mode 0:从小到大   1:从大到小
     */
    public static void csort(int[] a,char mode){
        for(int j = 0;j<a.length;j++){
            int pos = j;
            if(mode == '>')
            for(int i = j+1;i<a.length;i++){
                if(a[pos]>a[i]) pos=i;
            }
            if(mode == '<')
                for(int i = j+1;i<a.length;i++){
                    if(a[pos]<a[i]) pos=i;
                }
            camp(a,j,pos);
        }
    }
    public static void csort(int[] a){//从大到小
        for(int j = 0;j<a.length;j++){
            int pos = j;
            for(int i = j+1;i<a.length;i++){
                if(a[pos]<a[i]) pos=i;
                }
            camp(a,j,pos);
        }
    }

    /**
     *
     * @param a 打印数组a
     */
    public static void cout(int []a){
        for(int b:a)
            System.out.println(b);
    }
    public static void cout(char []a){
        for(int b:a)
            System.out.println(b);
    }
    public static void cout(short []a){
        for(short b:a)
            System.out.println(b);
    }
    public static void cout(byte []a){
        for(byte b:a)
            System.out.println(b);
    }
    public static void cout(long []a){
        for(long b:a)
            System.out.println(b);
    }
    public static void cout(double []a){
        for(double b:a)
            System.out.println(b);
    }
    public static void cout(float []a){
        for(float b:a)
            System.out.println(b);
    }
    public static void coutIntToChar(int []a){
        for(int b:a)
            System.out.println((char)b);
    }
    public static void coutIntToString(int []a){
        System.out.print("[");
        for(int b=0;b<a.length;b++){
            System.out.print(a[b]);
            if(b<a.length-1)
                System.out.print(",");
        }
        System.out.println("]");
    }
    public static void coutIntToString_Char(int []a){
        System.out.print("[");
        for(int b=0;b<a.length;b++){
            System.out.print((char)a[b]);
            if(b<a.length-1)
            System.out.print(",");
        }
        System.out.println("]");
    }
}

二、知识点

1、方法重载

重载标记:参数不同(数量、类型)

                        例:代码段中的cout语句

重载意义:提高程序兼容性

2、排序方法

2.1起泡排序法 例sort

2.2快速排序法 例fsort(重载mode可以控制从大到小或从小到大)

2.3插入排序法 例csort

                        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值