Java各种排序方法 的用法

个人理解,有问题请指出

冒泡排序 选择排序

public static class TestStringFormat {
        public static void main(String[] args) {
            int []arr= {3,2,8,4,7};//创建数组
            System.out.println("排序前");
            showArr(arr);//打印显示排序前
         //循环实现冒泡排序 ---- 从下标0开始,依次前后比对。比对完成后再从下一位以此类推
//            for(int i=0;i<arr.length-1;i++) {
//                for(int j=0;j<arr.length-i-1;j++) {
//                    if(arr[j]>arr[j+1]) {
//                        int temp=arr[j];
//                        arr[j]=arr[j+1];
//                        arr[j+1]=temp;
//                    }
//
//                }
//            }
   //选择排序 --- 从下标0开始,和数组内所有数做比较找到比当前更小的,有就替换没有就保持不边
//            for(int i = 0; i < arr.length-1; i++){
//                int min = i;
//                for(int j = i+1; j <arr.length ;j++){
//                    if(arr[j]<arr[min]){
//                        min = j;
//                    }
//                }
//                int temp = arr[i];
//                arr[i] = arr[min];
//                arr[min] = temp;
//            }

            System.out.println("排序后");
            showArr(arr);

        }
        //打印方法
        private static void showArr(int []arr) {
            //增强for循环打印
            for(int a:arr) {
                System.out.print(a+"\t");

            }
            System.out.println();

        }
    }
冒泡排序动画演示
选择排序动画演示

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

插入排序

public class InsertSort implements IArraySort {
        // int []arr= {3,2,8,4,7};
    @Override
    public int[] sort(int[] sourceArray) throws Exception {
        // 拷贝原数组内容与长度,不直接修改原始数组.以防数据丢失
        int[] arr = Arrays.copy(sourceAarry,sourceArray.length);
        
        // 从数组下标为1的地方开始,第0为默认为有序
        for(int i=1;i<arr.length;i++;){
            // 记录要做比对的数
            int temp = arr[i];
            //记录它的下标
            int j = i;
            while(j>0 && temp < arr[j -1]){
                //把数组arr的第j-1位赋值给数组arr第j位.
                arr[j] = arr[j-1];
                j--;
            }
            //j不等于i进去
            if(j != i){
                // 把原本arr第j-1位小的数放进第j位
                // 小的放到原来大的那位数的位置去,大的放到小的那个位置去
                arr[j] = temp;
            }
        }
    }
}

动画演示

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


补充:在日常开发中排序中不只会出现long(长整型)这类型排序,会对更多的类型做排序.

数方法:在排序其他类型的数据时可以用上的方法。

  1. compareTo() 方法

compareTo( NumberSubClass referenceName )

referenceName -- 可以是一个 Byte, Double, Integer, Float, Long 或 Short 类型的参数。

返回值

  • 如果指定的数与参数相等返回 0。

  • 如果指定的数小于参数返回 -1。

  • 如果指定的数大于参数返回 1。

public class Test{ 
   public static void main(String args[]){
      Integer x = 5;
      // 按字典顺序 1>2>3...
      // 英文也是一样,26个字母的先后顺序 a>b>c>d
      System.out.println(x.compareTo(3));
      System.out.println(x.compareTo(5));
      System.out.println(x.compareTo(8));            
     }
}

返回值 
1
0
-1

详细说明


学习记录

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值