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

JAVA面试题之冒泡排序,插入排序及选择排序

经过几家的面试,发现每次笔试都有一道排序的题目,所以梳理一下,防止在面试中卡壳。

1、使用JAVA实现一个冒泡排序:

源码:

 public static void main(String[] args) {
        int [] a = {4,1,18,6,5,9};
        int [] c = bubbleSort(a);
        System.out.print("冒泡排序结果:   ");
        for (int i = 0; i < c.length; i++) {
            System.out.print(c[i]+"   ");
        }
    }
    public static int [] bubbleSort(int [] a){
        int temp = 0;
        for(int i=1;i<a.length;i++){
            for(int j=0;j<a.length-i;j++){
                //一次比较两个元素,如果前者大于后者,就将他们进行交换。
                if (a[j] > a[j+1]) {
                    temp = a[j];
                    a[j] = a[j+1];
                    a[j+1] = temp;
                }
            }
        }
        return a;
    }

代码分析:见 《JAVA之冒泡排序》

2、使用JAVA实现一个选择排序:

源码:

 public static void main(String[] args) {
        int [] a = {7,4,9,13,1,6};
        int [] c = chooseSort(a);
        for (int i = 0; i < c.length; i++) {
            System.out.print(c[i]+ "   ");
        }
    }
    /**
     * 选择排序:
     * 从数列中第一位开始,遍历之后的所有,选择出最小的一个放到第一位。
     * 接下来从第二位开始,找到数组中第二个小数,放到第二个位置,以此类推。
     * @param a
     * @return
     */
    public static int [] chooseSort(int [] a){
        //定义最小数据的下表,默认是第一个
        int minIndex = 0;
        for (int i = 0; i < a.length-1; i++) {
            minIndex = i;
            for (int j = i+1; j < a.length; j++) {
                if(a[minIndex]>a[j]){
                    minIndex = j;
                }
            }
            //找到最小值的角标,进行交换
            if (minIndex != i){
                int temp = a[i];
                a[i] = a[minIndex];
                a[minIndex] = temp;
            }
        }
        return  a;
    }

代码分析:见 《JAVA之选择排序》

3、使用JAVA实现一个插入排序:

源码:

   public static void main(String[] args) {
        int [] a = {7,4,9,13,1,6};
        int [] c = insertSort(a);
        for (int i = 0; i < c.length; i++) {
            System.out.print(c[i]+"   ");
        }
    }
    private static int[] insertSort(int[] a) {
        int inserNode;
        int j;
        for (int i = 1; i < a.length; i++) {
            inserNode = a[i];
            j = i-1;
            while (j>=0 && a[j]>inserNode){
                a[j+1] = a[j];
                j--;
            }
            a[j+1] = inserNode;
        }
        return a;
    }

代码分析:见 《JAVA之插入排序》

总结:巩固基础,勇攀高峰!


相关文章:

  • Linux安装JDK步骤
  • Linux之ssh,scp命令的使用
  • Linux之ssh免密登录
  • Hadoop-2.8.0安装教程---单机/伪分布式配置
  • Java之序列化与反序列化
  • Hadoop之常用shell命令整理
  • Itext笔记之pdf页眉页脚
  • JAVA操作HDFS案例
  • zookeeper-3.4.10安装教程---分布式配置
  • storm-1.1.0安装教程---分布式配置
  • Hadoop之HDFS分布式文件系统读写流程详解
  • Zookeeper之常用API详解
  • Docker之Docker介绍及安装配置
  • Docker之Docker镜像管理
  • Docker之Centos7 Docker私有仓库搭建
  • ----------
  • [译]Python中的类属性与实例属性的区别
  • 2018一半小结一波
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • express + mock 让前后台并行开发
  • flutter的key在widget list的作用以及必要性
  • isset在php5.6-和php7.0+的一些差异
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • nginx 配置多 域名 + 多 https
  • Python_OOP
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 解决iview多表头动态更改列元素发生的错误
  • 批量截取pdf文件
  • 前端工程化(Gulp、Webpack)-webpack
  • 如何在 Tornado 中实现 Middleware
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 新版博客前端前瞻
  • 你对linux中grep命令知道多少?
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • (1)(1.9) MSP (version 4.2)
  • (一)Thymeleaf用法——Thymeleaf简介
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (转载)利用webkit抓取动态网页和链接
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .net FrameWork简介,数组,枚举
  • .Net IOC框架入门之一 Unity
  • /bin、/sbin、/usr/bin、/usr/sbin
  • @converter 只能用mysql吗_python-MySQLConverter对象没有mysql-connector属性’...
  • @DateTimeFormat 和 @JsonFormat 注解详解
  • @ModelAttribute使用详解
  • @取消转义
  • []AT 指令 收发短信和GPRS上网 SIM508/548
  • [3D游戏开发实践] Cocos Cyberpunk 源码解读-高中低端机性能适配策略
  • [Android实例] 保持屏幕长亮的两种方法 [转]
  • [bug总结]: Feign调用GET请求找不到请求体实体类
  • [BZOJ 4034][HAOI2015]T2 [树链剖分]
  • [CareerCup] 12.3 Test Move Method in a Chess Game 测试象棋游戏中的移动方法
  • [Electron]ipcMain.on和ipcMain.handle的区别