第一个:冒泡排序算法

原理:相邻的两个值进行比较,如果前面的比后面的大就交换位置

eg:假设有5个元素的一个array

  • 第一次:会比较4次,将最大的值放在最右边
  • 第二次:会比较3次,又排出剩余4个元素的最大值
  • 依次向下,知道最后一个,这样数组就算是排完了
package day16_nullnull;

import java.util.Arrays;

//冒泡排序算法的例子

public class null01_BubbleSort {

    public static void main(String[] args) {
int[] arr = {55,22,11,33,77,66};
//总共是要需要通过length-1次达到排序效果
for(int i=0;i<arr.length;i++){
//第一次0-1 1-2 2-3 3-4 4-5
//第二次0-1 1-2 2-3 3-4
//依次向下
for(int j=0;j<arr.length-i-1;j++){
System.out.println(j+"-"+(j+1));
if(arr[j]>arr[j+1]){ arr[j] = arr[j]^arr[j+1];
arr[j+1] = arr[j]^arr[j+1];
arr[j] = arr[j]^arr[j+1]; }
}
System.out.println("************");
}
System.out.println(Arrays.toString(arr));
} }

第二个:数组高级选择排序

原理:和上面的冒泡排序几乎是刚好相反,它会将小的向左边放,直到全部排序结束

package day16_nullnull;

import java.util.Arrays;

//数组高级选择排序

public class null02ArrayAdvancedSelectionSorting {

    public static void main(String[] args) {
int[] arr = {99,55,33,44,77,66,11};
//同上一个,也是需要经过length-1次排序
for(int i=0;i<arr.length-1;i++){
for(int j=i+1;j<arr.length;j++){
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
System.out.println(Arrays.toString(arr));
} }

第三个:数组高级二分查找(折半查找)

  二分查找又称为折半查找(让我想到了初中的一些数学题),目的是查找元素的索引,优点是查找次数少了,速度会快一些,平均性能好。但是却有一个前提,就是等待查询的数组啊必须是有序的(他要折半找最小最大中间值)。

package day16_nullnull;

//二分查找的例子

public class null03_BinarySearch {

    public static void main(String[] args) {
int[] arr = {11,22,33,44,55,66,77,88};
int max = arr.length-1;//取出最大值的索引
int min = 0;//指定最小值的索引
int mid = (min + max) / 2; //求出中间值的索引
int find = 66; //指定想要找到的值
while(find!=arr[mid]){
if(find<arr[mid]){
max = mid-1;
}else{
min = mid + 1;
}
mid = (min+max) / 2;
if(min>max){
System.out.println("找不到");
System.exit(0);
}
}
System.out.println("index:"+mid); } }

Java的三个基础排序算法(其余将在以后补充)的更多相关文章

  1. Java面试宝典系列之基础排序算法

    本文就是介绍一些常见的排序算法.排序是一个非常常见的应用场景,很多时候,我们需要根据自己需要排序的数据类型,来自定义排序算法,但是,在这里,我们只介绍这些基础排序算法,包括:插入排序.选择排序.冒泡排 ...

  2. 6种基础排序算法java源码+图文解析[面试宝典]

    一.概述 作为一个合格的程序员,算法是必备技能,特此总结6大基础算法.java版强烈推荐<算法第四版>非常适合入手,所有算法网上可以找到源码下载. PS:本文讲解算法分三步:1.思想2.图 ...

  3. 十大基础排序算法[java源码+动静双图解析+性能分析]

    一.概述 作为一个合格的程序员,算法是必备技能,特此总结十大基础排序算法.java版源码实现,强烈推荐<算法第四版>非常适合入手,所有算法网上可以找到源码下载. PS:本文讲解算法分三步: ...

  4. Java基础系列--基础排序算法

    原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9082138.html 一.概述 基础排序算法包括:桶排序.冒泡排序.选择排序.插入排序等 ...

  5. Java常见的几种排序算法-插入、选择、冒泡、快排、堆排等

    本文就是介绍一些常见的排序算法.排序是一个非常常见的应用场景,很多时候,我们需要根据自己需要排序的数据类型,来自定义排序算法,但是,在这里,我们只介绍这些基础排序算法,包括:插入排序.选择排序.冒泡排 ...

  6. 程序兵法:Java String 源码的排序算法(一)

    摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 这是泥瓦匠的第103篇原创 <程序兵法:Java Str ...

  7. php四种基础排序算法的运行时间比较

    /** * php四种基础排序算法的运行时间比较 * @authors Jesse (jesse152@163.com) * @date 2016-08-11 07:12:14 */ //冒泡排序法 ...

  8. php四种基础排序算法的运行时间比较!

    /** * php四种基础排序算法的运行时间比较 * @authors Jesse (jesse152@163.com) * @date 2016-08-11 07:12:14 */ //冒泡排序法 ...

  9. Java实现经典七大经典排序算法

    利用Java语言实现七大经典排序算法:冒泡排序.选择排序.插入排序.希尔排序.堆排序.归并排序以及快速排序. 分类 类别 算法 插入排序类 插入排序.希尔排序 选择排序类 选择排序.堆排序 交换排序类 ...

随机推荐

  1. Exception in thread "main" java.lang.Error: Unresolved compilation problem

    初学java,使用eclipse编译时,可能会遇到如下图所示的编译错误(Exception in thread "main" java.lang.Error: Unresolved ...

  2. C++中的关键知识点(汇总)

    1. class的virtual 与non-virtual的区别 (1)virtual 函数时动态绑定,而non-virtual是静态绑定,前者是多态效果. (2)多态类的析构函数应该为virtual ...

  3. DELPHI移动端支付宝支付

    Delphi XE7 Android 应用接入支付宝SDK的方法 1      应用场景和准备工作: 采用XE系列开发的android apps. apps中需要集成支付宝的支付能力. 支付到指定的商 ...

  4. java数据结构和算法03(队列和优先级队列)

    什么是队列呢?其实队列跟栈很像,我们可以把栈的底部给弄开,这样数据就可以从下面漏出来了,我们就从下面拿就好了. 可以看到队列是新进先出,就跟我们显示生活中的排队一样,买火车票,飞机票等一样,先去的肯定 ...

  5. Linux Guard Service - 守护进程再次分裂子进程

    当系统区内存不能再申请新进程的时候申请会失败 在512MB内存下最多分配的子进程数 3331 [root@localhost 05]# ./test5-1 50000 expect 50000 sub ...

  6. MYC编译器源码分析之程序入口

    前文.NET框架源码解读之MYC编译器讲了MyC编译器的架构,整个编译器是用C#语言写的,上图列出了MyC编译器编译一个C源文件的过程,编译主路径如下: 首先是入口Main函数用来解析命令行参数,读取 ...

  7. Hadoopd 单元测试-MPUnit

    Apache 版: 官网:http://mrunit.apache.org 教程:https://cwiki.apache.org/confluence/display/MRUNIT/MRUnit+T ...

  8. pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.

    # 背景 安装pip后发现执行pip install pytest,提示下面错误 pip is configured with locations that require TLS/SSL, howe ...

  9. jenkin+docker+git持续集成环境搭建

    1.安装Jenkins(需要在Jenkins容器中安装maven,java环境不用安装,Jenkins初次启动时会自动安装) 参考:docker中安装Jenkins 2.配置git 3.安装docke ...

  10. stringBuilder类的一些用法

    对String对象进行处理的时候比如拼接.截取,会在内存中新建很多字符串对象.为了减少内存开支,可以使用StringBuilder类型. 创建StringBuiler实例: 用构造函数直接创建: St ...