折半、快排、插入排序的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, ...