折半、快排、插入排序的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. 快排的思想 通过一趟排序将要排序的数据分割成独立的两部分,前一部分的所有数据都要小于后一部分的所有数据,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据的 ...
随机推荐
- git命令设置
初始化为git项目: cd .../project //切换到项目目录下 git init //把project初始化为git项目 git remote add origin https://gi ...
- SUSE12SP3-Mycat(1)安装
目录 前言 环境 安装说明 安装 1.mycat 2.mycat-eye 前言 介绍自己看. mycat官网:http://www.mycat.io/ 环境 系统: SUSE12SP3 软件 版本 说 ...
- .NET Core微服务之基于MassTransit实现数据最终一致性(Part 2)
Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.案例结构与说明 在上一篇中,我们了解了MassTransit这个开源组件的基本用法,这一篇我们结合一个小案例来了解在ASP.NET C ...
- LindDotNetCore~授权中间件的介绍
回到目录 LindDotNetCore中间件 大叔认识中间件就是主要对http请求进行拦截,然后添加具体个性化功能的逻辑,这种把请求切开,添加新逻辑的方式一般称为面向方面的逻辑AOP! 授权中间件 请 ...
- 是时候给大家介绍 Spring Boot/Cloud 背后豪华的研发团队了。
看了 Pivotal 公司的发展历史,这尼玛就是一场商业大片呀. 我们刚开始学习 Spring Boot 的时候肯定都会看到这么一句话: Spring Boot 是由 Pivotal 团队提供的全新框 ...
- 深入理解Linux内核 学习笔记(3)
第三章 进程 可以看到很多熟悉的结构体 进程状态: 可运行状态(TASK_ RUNNING) 进程要么在CPU上执行,要么准备执行. 可巾断的等待状态(TASK_ INTERRUPTIBLE) 进程被 ...
- JDK源码分析(11)之 BlockingQueue 相关
本文将主要结合源码对 JDK 中的阻塞队列进行分析,并比较其各自的特点: 一.BlockingQueue 概述 说到阻塞队列想到的第一个应用场景可能就是生产者消费者模式了,如图所示: 根据上图所示,明 ...
- c# 正则表达式替换字符串中常见的特殊字符
第一种,若字符串中含有字母,则使用以下方法 public static string RemoveSpecialCharacterToupper(string hexData) { //下文中的‘\\ ...
- c#封装DBHelper类
public enum EffentNextType { /// <summary> /// 对其他语句无任何影响 /// </summary> None, /// <s ...
- spring boot拦截器中获取request post请求中的参数
最近有一个需要从拦截器中获取post请求的参数的需求,这里记录一下处理过程中出现的问题. 首先想到的就是request.getParameter(String )方法,但是这个方法只能在get请求中取 ...