文档章节

经典算法-选择排序,冒泡排序,二分查找

指尖Coding
 指尖Coding
发布于 2016/08/12 16:07
字数 311
阅读 5
收藏 0
import java.util.Arrays;

/**
 * Created by zhangyue on 16/8/12.
 *  测试-算法练习
 *  参考网址:
 *  http://www.csdn.net/article/2014-04-10/2819237-Top-10-Algorithms-for-Coding-Interview
 */
public class AlgorithmTest {

    public static void main(String[] args) {
        int a[] = {9,4,3,6,1,8};
        System.out.println(Arrays.toString(selectSort(a)));
        int b[] = {9,4,3,6,1,8};
        System.out.println(Arrays.toString(bubbleSort(b)));
        int c[] = {2,3,6,12,23,45,46,77,79,100,123,146,150};
        System.out.println(binSearch(c,3));
    }

    //1.选择排序-相邻的比较,小的放在左边。时间复杂度n-1
    public static int[] selectSort(int[] arr){
        for(int i = 0;i<arr.length-1;i++){
            for(int j=i+1;j<arr.length;j++){
                int temp = arr[i];
                if(temp>arr[j]){
                    arr[i]=arr[j];//小的放在前面
                    arr[j]=temp;
                }
            }
        }
        return arr;
    }

    //2.冒泡排序,最小的放在上面,提取一个最小的,二次循环就少一个
    public static int[] bubbleSort(int[] arr){
        for(int i = 0;i<arr.length-1;i++){
            for(int j=0;j<arr.length-1-i;j++){
                if(arr[j]>arr[j+1]){
                    int temp=arr[j];
                    arr[j]=arr[j+1];//小的放在前面
                    arr[j+1]=temp;
                }
            }
        }
        return arr;
    }

    //3.二分查找算法-非递归算法-while循环
    public static int binSearch(int[] arr,int key){
        int low = arr[0];
        int hight = arr[arr.length-1];
        //每次判断之后,low和height的值就会重新变化
        while(low<=hight){
            int middle = low + ((hight-low)>>1);//带符号右移1位,相当于除以2
            if(key==middle){
                return middle;
            }else if(key < middle){
                //low不变
                hight = middle-1;
            }else{
                low = middle+1;
            }
        }
        return -1;
    }

}

 

© 著作权归作者所有

共有 人打赏支持
指尖Coding
粉丝 1
博文 58
码字总数 39249
作品 0
静安
私信 提问
java算法篇总结

冒泡排序 比较相邻元素,如果第一个比第二个大,那么交换他们的位置;每对相邻元素进行依次比较,最后的元素应该是最大的。 选择排序 寻找最小值所在索引位置,于i当前起始点进行对调位置 pu...

丛林迷雾
2015/09/07
82
0
JavaScript数据结构与算法(排序算法)

比较排序算法一般有三个指标 时间复杂度, 算法执行完成所需要的时间 空间复杂度, 算法执行完成所需要的空间 稳定性,当二个元素的值相同的时候,排序之后二个元素的前后位置是否发生改变 ...

fiveoneLei
07/17
0
0
常用基础排序算法

首先初始化了一个MAX大小的数组,用乱序函数将数组打乱,用于测试各个排序函数,先附上要测试的几个基础排序函数,后面附上乱序函数和主调度函数。代码就那么几行,只是注释的思乱占了比较多...

穿靴子的猫LJL
2015/10/13
11
0
PHPer面试指南-算法篇

本书的 GitHub 地址:https://github.com/todayqq/PHPerInterviewGuide 算法可以说是大厂的必考题,对于算法,一定要理解其中的精髓、原理。 冒泡排序 冒泡排序的原理:一组数据,比较相邻数...

angkee
01/24
0
0
第二十四节:Java语言基础-讲解数组的综合应用

数组的综合应用 数组转字符串 选择排序 选择排序是第一个人和后续排序的人进行比较,若第一个人大于第二个人,就进行交换,那么这时第一人就是最小的,然后这时的第一个人和第三个人进行比较...

达叔小生
08/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

《唐史原来超有趣》的读后感优秀范文3700字

《唐史原来超有趣》的读后感优秀范文3700字: 作者:花若离。我今天分享的内容《唐史原来超有趣》这本书的读后感,我将这本书看了一遍之后就束之高阁了,不过里面的内容一直在在脑海中回放,...

原创小博客
16分钟前
0
0
IC-CAD Methodology知识图谱

CAD (Computer Aided Design),计算机辅助设计,指利用计算机及其图形设备帮助设计人员进行设计工作,这个定义同样可以用来近似描述IC公司CAD工程师这个岗位的工作。 早期IC公司的CAD岗位最初...

李艳青1987
25分钟前
4
0
Eos测试框架EosFactory

EOS Factory包含一个完整的EOS测试框架,可以进行智能合约的开发和测试。由Tokenika于创建于2017年的这个基于Python的EOS测试框架可以轻松地完成智能合约的开发、部署与测试。 如果你希望马上...

汇智网教程
40分钟前
5
0
CompletableFuture get方法一直阻塞或抛出TimeoutException

问题描述 最近刚刚上线的服务突然抛出大量的TimeoutException,查询后发现是使用了CompletableFuture,并且在执行future.get(5, TimeUnit.SECONDS);时抛出了TimeoutException异常,导致接口响...

xiaolyuh
今天
4
0
dubbo 搭建与使用

官网:http://dubbo.apache.org/en-us/ 一,安装监控中心(可以不安装) admin管理控制台,monitor监控中心 下载 bubbo ops 这个是新版的,需要node.js环境,我没有就用老版的了...

小兵胖胖
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部