文档章节

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

指尖Coding
 指尖Coding
发布于 2016/08/12 16:07
字数 311
阅读 5
收藏 0
点赞 0
评论 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
博文 51
码字总数 37092
作品 0
静安
java算法篇总结

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

丛林迷雾 ⋅ 2015/09/07 ⋅ 0

应该熟练掌握的常用的算法

各种排序算法(插入排序、冒泡排序、选择排序,快速排序,堆排序,归并排序) 线性表(一般的线性表,栈,队列)的插入和删除 二叉树的遍历(前序,中序,后序) 图的遍历(深度优先,广度优先)...

TracyZhang ⋅ 2012/05/20 ⋅ 0

常用基础排序算法

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

穿靴子的猫LJL ⋅ 2015/10/13 ⋅ 0

PHPer面试指南-算法篇

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

angkee ⋅ 01/24 ⋅ 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

数组高级部分--排序,查找

1.数组排序之冒泡排序: 两两比较,大的往后放放,第一次比较完毕之后,最大值就出现在了最大索引出,继续依次比较,得到一个排好序的数组! 2.数组排序之:选择排序: 用0索引依次和后面的索引进行比...

浅0梦0 ⋅ 2017/07/27 ⋅ 0

常用的排序/查找算法的时间复杂度和空间复杂度

常用的排序算法的时间复杂度和空间复杂度 排序法 最差时间分析 平均时间复杂度 稳定度 空间复杂度 冒泡排序 O(n2) O(n2) 稳定 O(1) 插入排序 O(n2) O(n2) 稳定 O(1) 选择排序 O(n2) O(n2) 稳...

xiaomin0322 ⋅ 04/27 ⋅ 0

PHP常见排序算法学习

题记: 常见的排序算法有:冒泡排序法,快速排序法,选择排序法,插入排序法,此处作为自己最近面试准备进行的学习笔记,同时也希望能帮到你。 需求:将一个有多个数字的数组进行从小到大的排...

moTzxx ⋅ 2017/10/27 ⋅ 0

算法之路

最近在GitHub上看到的某位学友的算法学习规划,贴过来与各位共勉。有新的内容可以文末留言补充。 学习方法 把所有经典算法写一遍 看算法有关源码 加入算法学习社区,相互鼓励学习 看经典书籍...

李序锴 ⋅ 2017/11/08 ⋅ 0

php冒泡排序跟二分算法

PHP冒泡排序 $i=1,子循环运行$j=5,$j=4,$j=3,$j=2,$=1;第一次查找将这个数组中最小的放到第一位去 $=2,资讯还运行$j=5,$j=4;$j=3;$j=2;第二次查找这个数组中次小的放到第二去 如此循环就实现...

tree2013 ⋅ 2016/04/18 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

zblog2.3版本的asp系统是否可以超越卢松松博客的流量[图]

最近访问zblog官网,发现zlbog-asp2.3版本已经进入测试阶段了,虽然正式版还没有发布,想必也不久了。那么作为aps纵横江湖十多年的今天,blog2.2版本应该已经成熟了,为什么还要发布这个2.3...

原创小博客 ⋅ 今天 ⋅ 0

聊聊spring cloud的HystrixCircuitBreakerConfiguration

序 本文主要研究一下spring cloud的HystrixCircuitBreakerConfiguration HystrixCircuitBreakerConfiguration spring-cloud-netflix-core-2.0.0.RELEASE-sources.jar!/org/springframework/......

go4it ⋅ 今天 ⋅ 0

二分查找

二分查找,也称折半查找、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于...

人觉非常君 ⋅ 今天 ⋅ 0

VS中使用X64汇编

需要注意的是,在X86项目中,可以使用__asm{}来嵌入汇编代码,但是在X64项目中,再也不能使用__asm{}来编写嵌入式汇编程序了,必须使用专门的.asm汇编文件来编写相应的汇编代码,然后在其它地...

simpower ⋅ 今天 ⋅ 0

ThreadPoolExecutor

ThreadPoolExecutor public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, ......

4rnold ⋅ 昨天 ⋅ 0

Java正无穷大、负无穷大以及NaN

问题来源:用Java代码写了一个计算公式,包含除法和对数和取反,在页面上出现了-infinity,不知道这是什么问题,网上找答案才明白意思是负的无穷大。 思考:为什么会出现这种情况呢?这是哪里...

young_chen ⋅ 昨天 ⋅ 0

前台对中文编码,后台解码

前台:encodeURI(sbzt) 后台:String param = URLDecoder.decode(sbzt,"UTF-8");

west_coast ⋅ 昨天 ⋅ 0

实验楼—MySQL基础课程-挑战3实验报告

按照文档要求创建数据库 sudo sercice mysql startwget http://labfile.oss.aliyuncs.com/courses/9/createdb2.sqlvim /home/shiyanlou/createdb2.sql#查看下数据库代码 代码创建了grade......

zhangjin7 ⋅ 昨天 ⋅ 0

一起读书《深入浅出nodejs》-node模块机制

node 模块机制 前言 说到node,就不免得提到JavaScript。JavaScript自诞生以来,经历了工具类库、组件库、前端框架、前端应用的变迁。通过无数开发人员的努力,JavaScript不断被类聚和抽象,...

小草先森 ⋅ 昨天 ⋅ 0

Java桌球小游戏

其实算不上一个游戏,就是两张图片,不停的重画,改变ball图片的位置。一个左右直线碰撞的,一个有角度碰撞的。 左右直线碰撞 package com.bjsxt.test;import javax.swing.*;import j...

森林之下 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部