折半、快排、插入排序的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. 快排的思想 通过一趟排序将要排序的数据分割成独立的两部分,前一部分的所有数据都要小于后一部分的所有数据,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据的 ...
随机推荐
- C#中的RDLC报告
介绍 此示例显示如何在C#中生成RDLC报告,您可以为小型,中型和大型企业生成报告. 构建示例 Visual Studio 2013,.Net Frameworm 4.5,MS SQL Server ...
- 『集群』003 Slithice 最简分布式(多个客户端,一个独立服务端)
Slithice 最简分布式(多个客户端,一个独立服务端) 案例Demo 展示: 我们搭建一个 可以 独立运行 的 服务端:然后 多个客户端 并发链接 这个 服务端 完成 分布式逻辑: 服务器 独立运 ...
- springboot~Integer和int如何选择,Integer的意义何在
今天说一下自己在项目中遇到的问题,然后总结一下Integer引用类型和int值类型 关于默认值 Integer默认为null int默认为0 为什么把数据实体设计成Integer或者不是int 大叔认 ...
- 微信小程序开发07-列表页面怎么做
接上文:微信小程序开发06-一个业务页面的完成 github地址:https://github.com/yexiaochai/wxdemo 我们首页功能基本完成,我对比了下实际工作中的需求,完成度有7 ...
- 【大数据安全】基于Kerberos的大数据安全验证方案
1.背景 互联网从来就不是一个安全的地方.很多时候我们过分依赖防火墙来解决安全的问题,不幸的是,防火墙是假设"坏人"是来自外部的,而真正具有破坏性的攻击事件都是往往都是来自于内部的 ...
- angr学习
0.资料 几个主要的网站 angr的github:https://github.com/angr angr的document:https://docs.angr.io/ angr的api:https: ...
- Ambiguous HTTP method Actions require an explicit HttpMethod binding for Swagger 2.0
异常内容 NotSupportedException: Ambiguous HTTP method for action . Actions require an explicit HttpMetho ...
- 关于sass与VScode 一些配置 学习记录
VScode三个关于sass的插件 .vscode-Sass------sass/scss文件语法提示.(sublime text也有) .vscode-Easy Sass------scss编译成c ...
- vue echarts map的使用,页面多图动态自适应
最近在vue中使用echarts时,遇到了一些坑,在此记录一下. 1:echarts map的使用 2:页面多图自适应,只有一个图生效 3:根据设备的dpr,动态的修改了meta标签中的initial ...
- 在 vue cli3 的项目中配置双服务,模拟 ajax 分页请求
最近安装了下vue cli3版本,与 cli 2 相比,文件少了,以前配置方法也不管用了.demo 中的大量的数据,需要做成 ajax 请求的方式来展示数据,因此,需要启动两个服务,一个用作前端请求, ...