折半、快排、插入排序的Java实现
插入排序
import java.util.Arrays;
public class InsertionSort {
    /**
     * 对数组里面进行插入排序
     * 参数1 数组
     * 参数2 数组大小
     */
    static void InsertSort(int arr[]){
        int in,out,temp;
        for ( out = 1; out < arr.length; out++) {
            temp = arr[out];
            in=out;
            while (in>0 && arr[in-1]>=temp){
                arr[in]=arr[in-1];
                in--;
            }
            arr[in]=temp;
        }
    }
    public static void main(String[] args) {
        int[] arr={2,4,5,6,8,0,1,5,9,7};
        InsertSort(arr);
        System.out.println(Arrays.toString(arr));
    }
}
快速排序
import java.util.Arrays;
public class QuickSort {
    /**
     * 快排
     * @param arr 用于排序的数组
     * @param l 数组的左边界
     * @param r 数组的右边界
     */
    static void Quicktion(int arr[],int l,int r){
        int i,j,pivot;
        if(l<r){
            i=l;j=r;
            pivot=arr[i];
            while (i<j){
                while (i<j && arr[j]>pivot) j--;//从右往左
                if(i<j){
                    arr[i]=arr[j];
                    i++;
                }
                while (i<j && arr[i]<pivot) i++;//从左往右
                if(i<j){
                    arr[j]=arr[i];
                    j--;
                }
            }
            arr[i]=pivot;
            Quicktion(arr,l,i-1);
            Quicktion(arr,i+1,r);
        }
    }
    public static void main(String[] args) {
        int arr[] = {8,6,4,2,0,7,3,5,9};
        Quicktion(arr,0,8);
        System.out.println(Arrays.toString(arr));
    }
}
折半查找
public class BinSearch {
    /*递归版*/
    public static int binsearch1(int v[],int x,int left,int right){
        int middle;
        if(left<=right){
            middle=(left+right)/2;
            if(v[middle]==x) return middle;
            else if(a[middle]<x) left=middle+1;
            else if(a[middle]>x) right=middle-1;
            return binsearch1(v, x, left, right);
        }
    }
    /*迭代版*/
    public static int binsearch(int x,int v[],int n){
        int low,high,mid;
        low=0;high=n-1;
        while (low<=high){
            mid = (low+high)/2;
            if(x<v[mid]){
                high=mid-1;
            }else if(x>v[mid]){
                low=mid+1;
            }else{
                return mid;
            }
        }
        return -1;
    }
    public static void main(String[] args) {
        int arr[] = {1,3,4,5,6,7,8,10};
        int result,num;
        num=10;
        result = binsearch(num,arr,8);
        if(result<0){
            System.out.println("not found");
        }else{
            System.out.println(result+" , found……");
        }
    }
}
折半、快排、插入排序的Java实现的更多相关文章
- Java排序算法分析与实现:快排、冒泡排序、选择排序、插入排序、归并排序(二)
		
一.概述: 上篇博客介绍了常见简单算法:冒泡排序.选择排序和插入排序.本文介绍高级排序算法:快速排序和归并排序.在开始介绍算法之前,首先介绍高级算法所需要的基础知识:划分.递归,并顺带介绍二分查找算法 ...
 - java排序,冒泡排序,选择排序,插入排序,快排
		
冒泡排序 时间复杂度:O(n^2) 空间复杂度O(1) 稳定性:稳定 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.这步做完后,最 ...
 - Java常见的几种排序算法-插入、选择、冒泡、快排、堆排等
		
本文就是介绍一些常见的排序算法.排序是一个非常常见的应用场景,很多时候,我们需要根据自己需要排序的数据类型,来自定义排序算法,但是,在这里,我们只介绍这些基础排序算法,包括:插入排序.选择排序.冒泡排 ...
 - Java实现的各种排序算法(包括冒泡,快排等)
		
//堆排序 不稳定 import java.util.Arrays; public class HeapSort { public static void main(String[] args) { ...
 - Java基础进阶:APi使用,Math,Arrarys,Objects工具类,自动拆装箱,字符串与基本数据类型互转,递归算法源码,冒泡排序源码实现,快排实现源码,附重难点,代码实现源码,课堂笔记,课后扩展及答案
		
要点摘要 Math: 类中么有构造方法,内部方法是静态的,可以直接类名.方式调用 常用: Math.abs(int a):返回参数绝对值 Math.ceil(double a):返回大于或等于参数的最 ...
 - 基于visual Studio2013解决算法导论之010快排中应用插入排序
		
 题目 快排中引用插入排序 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <malloc.h> ...
 - 快排+java实现
		
import java.util.Arrays; public class QuickSort { //三数取中法.取出不大不小的那个位置 public static int getPivotPos( ...
 - Java 排序(快排,归并)
		
Java 排序有Java.util.Arrays的sort方法,具体查看JDK API(一般都是用快排实现的,有的是用归并) package yxy; import java.util.Arrays; ...
 - 快排的java实现方式,用java代码来实现快排
		
1. 快排的思想 通过一趟排序将要排序的数据分割成独立的两部分,前一部分的所有数据都要小于后一部分的所有数据,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据的 ...
 
随机推荐
- 使用前端技术和MySQL+PHP制作自己的一个个人博客网站
			
源代码地址:https://github.com/YauCheun/BlogCode 我的博客网站地址:http://www.yublog.fun/ 制作前景: 想拥有一个自己独自开发的一个小型博客网 ...
 - .NET Core微服务之基于Ocelot实现API网关服务
			
Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.啥是API网关? API 网关一般放到微服务的最前端,并且要让API 网关变成由应用所发起的每个请求的入口.这样就可以明显的简化客户端 ...
 - SpringBoot整合Swagger2,再也不用维护接口文档了!
			
前后端分离后,维护接口文档基本上是必不可少的工作.一个理想的状态是设计好后,接口文档发给前端和后端,大伙按照既定的规则各自开发,开发好了对接上了就可以上线了.当然这是一种非常理想的状态,实际开发中却很 ...
 - [深度应用]·DC竞赛轴承故障检测开源Baseline(基于Keras 1D卷积 val_acc:0.99780)
			
[深度应用]·DC竞赛轴承故障检测开源Baseline(基于Keras1D卷积 val_acc:0.99780) 个人网站--> http://www.yansongsong.cn/ Githu ...
 - 开辟sys节点用户层直接操作物理地址(比/dev/mem方便)
			
在调试驱动程序时, 经常要设置主控器寄存器参数或者运行时读取寄存器值debug问题, 每次修改驱动读取寄存器值都要编译一次驱动再insmod, 十分不方便, 哪怕驱动提供一个节点 如dev/mem给应 ...
 - C#工具:MySQL忘记密码解决方法
			
1.进入管理员控制台停止mysql服务:net stop mysql; 2.进入mysql的安装路径,如我的安装路径为C:\Program Files\MySQL\MySQL Server 5.5,打 ...
 - javascript小记一则:今天在写VS2005——.NET程序时,写的一个JS图片示例案例
			
源码如下,如遇调试问题,可以找我解决: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &quo ...
 - WPF 自定义 ImageButton
			
控件源码: public class ImageButton : Button { public ImageButton() { } public string No ...
 - Spring Boot 2.X 如何添加拦截器?
			
最近使用SpringBoot2.X搭建了一个项目,大部分接口都需要做登录校验,所以打算使用注解+拦截器来实现,在此记录下实现过程. 一.实现原理 1. 自定义一个注解@NeedLogin,如果接口需要 ...
 - python xlrd 读取excel.md
			
文章链接:https://mp.weixin.qq.com/s/fojkVO-AB2cCu7FtDtPBjw 之前的文章介绍过关于写入excel表格的方法,近期自己在做一个网站,涉及到读取excel, ...