文档章节

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

指尖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
博文 52
码字总数 37092
作品 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实现插入、冒泡、选择、快速排序、二分查找

一. 直接插入排序 void insertSort(int[] a){ for(int i=1;i<a.length; i++){ if (a[i]<a[i-1]){ temp = a[i]; //1 a[i] = a[i-1]; //2 // 继续和前面的进行比较 for(int j=i-2; j>=0; j--){......

xinyitianii
2014/06/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

OSChina 周日乱弹 —— 种族不同,禁止交往

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @小小编辑:推荐歌曲《苏菲小姐》- 鱼果 《苏菲小姐》- 鱼果 手机党少年们想听歌,请使劲儿戳(这里) @貓夏:下大雨 正是睡觉的好时候 临睡前...

小小编辑
今天
199
6
Python 搭建简单服务器

Python动态服务器网页(需要使用WSGI接口),基本实现步骤如下: 1.等待客户端的链接,服务器会收到一个http协议的请求数据报 2.利用正则表达式对这个请求数据报进行解析(请求方式、提取出文...

代码打碟手
今天
1
0
Confluence 6 删除垃圾内容

属性(profile)垃圾 属性垃圾的定义为,一个垃圾用户在 Confluence 创建了用户,但是这个用户在自己的属性页面中添加了垃圾 URL。 如果你有很多垃圾用户在你的系统中创建了属性,你可以使用...

honeymose
今天
0
0
qduoj~前端~二次开发~打包docker镜像并上传到阿里云容器镜像仓库

上一篇文章https://my.oschina.net/finchxu/blog/1930017记录了怎么在本地修改前端,现在我要把我的修改添加到部署到本地的前端的docker容器中,然后打包这个容器成为一个本地镜像,然后把这...

虚拟世界的懒猫
今天
1
0
UML中 的各种符号含义

Class Notation A class notation consists of three parts: Class Name The name of the class appears in the first partition. Class Attributes Attributes are shown in the second par......

hutaishi
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部