当前位置: 首页 > news >正文

Java 简单算法--排序

1. 冒泡排序

package cn.magicdu.algorithm;

public class BubbleSort {
    public static void main(String[] args) {
        int[] arr = { 5, 7, 8, 4, 3, 9, 7, 6 };
        bubbleSort(arr);
    }

    /**
     * 冒泡排序
     * @param arr
     */
    private static void bubbleSort(int[] arr) {
        int temp=0;
        for(int i=0;i<arr.length;i++){
            for(int j=0;j<arr.length-i-1;j++){
                if(arr[j]>arr[j+1]){
                    temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }
        }
        bubblePrint(arr);
    }
    /**
     * 打印数组
     * @param arr
     */

    private static void bubblePrint(int[] arr) {
        for(int i=0;i<arr.length;i++){
            System.out.println(arr[i]);
        }
        
    }
}

2.插入排序

package cn.magicdu.algorithm;

public class InsertSort {
    public static void main(String[] args) {
      int []arr={3,4,2,3,57,8,34,15};
      insertSort(arr);
    }

    /**
     * 插入排序
     * @param arr
     */
    private static void insertSort(int[] arr) {
        for(int i=0;i<arr.length;i++){
            int temp=arr[i];
            int j;
            for(j=i;j>0;j--){
                if(arr[j-1]>temp){
                    arr[j]=arr[j-1];
                }else{
                    break;
                }
            }
            arr[j]=temp;
        }
        insertPrint(arr);
    }

    /**
     * 打印数组
     * @param arr
     */
    private static void insertPrint(int[] arr) {
        for(int i=0;i<arr.length;i++){
            System.out.println(arr[i]);
        }
        
    }
    
}

3.快速排序

package cn.magicdu.algorithm;

public class QuickSort {
    public static void main(String[] args) {
        int[] arr = { 1, 4, 6, 2, 3, 4, 7, 8, 9, 5, 65 };
        print(arr);
        quickSort(arr, 0, arr.length - 1);
        print(arr);
    }

    
    /**
     * 快速排序
     * @param arr
     * @param low
     * @param high
     */
    private static void quickSort(int[] arr, int low, int high) {
        
        if(low>=high){
            return;
        }
        if((high-low)==1){
            if(arr[0]>arr[1])
                swap(arr,0,1);
            return;
        }
        int pivot=arr[low];
        int left=low+1;
        int right=high;
        while(left<right){
            while(left<right&&left<=high){
                if(arr[left]>pivot)
                    break;
                left++;
            }
            while(left<=right&&right>low){
                if(arr[right]<=pivot)
                    break;
                right--;
            }
            if(left<right){
                swap(arr, right, left);
            }
        }
        swap(arr, low, right);
        quickSort(arr, low, right);
        quickSort(arr, right+1, high);
    }


    /**
     * 交换数字
     * @param arr
     * @param i
     * @param j
     */
    private static void swap(int[] arr, int i, int j) {
        
        int temp;
        temp=arr[i];
        arr[i]=arr[j];
        arr[j]=temp;
    }

    /**
     * 打印数组
     * @param arr
     */
    private static void print(int [] arr){
        for(int i=0;i<arr.length;i++){
            System.out.print(arr[i]+",");
        }
        System.out.println();
    }
}

 

转载于:https://www.cnblogs.com/xiaoduc-org/p/5971085.html

相关文章:

  • mysql视图学习总结
  • Ionic2构建iOS应用上传总结
  • vim 命令的一些用法
  • JS闭包
  • 【服务器环境搭建-Centos】jdk的安装
  • Linux 性能基准测试
  • 那些年我们学Flask-SQLAlchemy,实现数据库操作,分页等功能
  • Java设计模式—建造者模式
  • 集群基础之LVS的基础概念
  • mqtt
  • 不做竞价,我们还能做哪些平台?
  • ThinkSNS开源社交系统安装问题及解决措施
  • mysql主从复制的配置总结
  • 关于LOG4J中的日志级别TRACE
  • gdb调试python
  • Cookie 在前端中的实践
  • crontab执行失败的多种原因
  • download使用浅析
  • E-HPC支持多队列管理和自动伸缩
  • github从入门到放弃(1)
  • JavaScript类型识别
  • PHP的类修饰符与访问修饰符
  • Python实现BT种子转化为磁力链接【实战】
  • React Transition Group -- Transition 组件
  • TypeScript迭代器
  • vue学习系列(二)vue-cli
  • 安装python包到指定虚拟环境
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 基于webpack 的 vue 多页架构
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 推荐一个React的管理后台框架
  • 在Docker Swarm上部署Apache Storm:第1部分
  • nb
  • hi-nginx-1.3.4编译安装
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • #pragma 指令
  • (003)SlickEdit Unity的补全
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (九)One-Wire总线-DS18B20
  • (十八)SpringBoot之发送QQ邮件
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (五)Python 垃圾回收机制
  • (转)winform之ListView
  • (转)甲方乙方——赵民谈找工作
  • ******IT公司面试题汇总+优秀技术博客汇总
  • .bat批处理出现中文乱码的情况
  • .NET Framework杂记
  • .Net 路由处理厉害了
  • .NET 中 GetProcess 相关方法的性能
  • .NET上SQLite的连接
  • .net实现头像缩放截取功能 -----转载自accp教程网
  • .NET项目中存在多个web.config文件时的加载顺序
  • .set 数据导入matlab,设置变量导入选项 - MATLAB setvaropts - MathWorks 中国