Java的三个基础排序算法(其余将在以后补充)
第一个:冒泡排序算法
原理:相邻的两个值进行比较,如果前面的比后面的大就交换位置
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的三个基础排序算法(其余将在以后补充)的更多相关文章
- Java面试宝典系列之基础排序算法
本文就是介绍一些常见的排序算法.排序是一个非常常见的应用场景,很多时候,我们需要根据自己需要排序的数据类型,来自定义排序算法,但是,在这里,我们只介绍这些基础排序算法,包括:插入排序.选择排序.冒泡排 ...
- 6种基础排序算法java源码+图文解析[面试宝典]
一.概述 作为一个合格的程序员,算法是必备技能,特此总结6大基础算法.java版强烈推荐<算法第四版>非常适合入手,所有算法网上可以找到源码下载. PS:本文讲解算法分三步:1.思想2.图 ...
- 十大基础排序算法[java源码+动静双图解析+性能分析]
一.概述 作为一个合格的程序员,算法是必备技能,特此总结十大基础排序算法.java版源码实现,强烈推荐<算法第四版>非常适合入手,所有算法网上可以找到源码下载. PS:本文讲解算法分三步: ...
- Java基础系列--基础排序算法
原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9082138.html 一.概述 基础排序算法包括:桶排序.冒泡排序.选择排序.插入排序等 ...
- Java常见的几种排序算法-插入、选择、冒泡、快排、堆排等
本文就是介绍一些常见的排序算法.排序是一个非常常见的应用场景,很多时候,我们需要根据自己需要排序的数据类型,来自定义排序算法,但是,在这里,我们只介绍这些基础排序算法,包括:插入排序.选择排序.冒泡排 ...
- 程序兵法:Java String 源码的排序算法(一)
摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 这是泥瓦匠的第103篇原创 <程序兵法:Java Str ...
- php四种基础排序算法的运行时间比较
/** * php四种基础排序算法的运行时间比较 * @authors Jesse (jesse152@163.com) * @date 2016-08-11 07:12:14 */ //冒泡排序法 ...
- php四种基础排序算法的运行时间比较!
/** * php四种基础排序算法的运行时间比较 * @authors Jesse (jesse152@163.com) * @date 2016-08-11 07:12:14 */ //冒泡排序法 ...
- Java实现经典七大经典排序算法
利用Java语言实现七大经典排序算法:冒泡排序.选择排序.插入排序.希尔排序.堆排序.归并排序以及快速排序. 分类 类别 算法 插入排序类 插入排序.希尔排序 选择排序类 选择排序.堆排序 交换排序类 ...
随机推荐
- 3D 相关
1. STL 2. AMF 3. X3D 网址: http://www.web3d.org/x3d-resources/content/examples/X3dResources.html
- oracle 索引的分类
1. B树索引(默认索引,保存讲过排序过的索引列和对应的rowid值) 1)说明: 1.oracle中最常用的索引:B树索引就是一颗二叉树:叶子节点(双向链表)包含索引列和指向表中每个匹配行的ROWI ...
- JAVA常见面试题及解答
JAVA相关基础知识1.面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时 ...
- 12.1.2: How to Modify and Enable The Configurable Home Page Delivered Via 12.1.2 (Doc ID 1061482.1)
In this Document Goal Solution References APPLIES TO: Oracle Applications Framework - Ver ...
- [react001] 使用webpack自动构建react 项目
1.react 简介 React 是一个Facebook出品的前端UI开发框架.react官方的tutorials 为了让人容易上手,并没有给在平常工作使用react的详细配置,随意学习的深入,你为了 ...
- 升级windows 10后网络连接异常
升级 windows 10,QQ无法连接,显示“登陆超时,请检查网络或者防火墙设置”.打开360软件助手,准备升级QQ试试,360软件助手也显示网络异常. 解决方法: 右键点击开始菜单,命令提示符(管 ...
- Solr 使用自定义 Query Parser(短语查询,精准查询)
原文出处:http://blog.chenlb.com/2010/08/solr-use-custom-query-parser.html 由于 Solr 默认的 Query Parser 生成的 Q ...
- solr特点三: boost(改变默认打分排序)
有时候默认的字段打分不能满足我们的需要,如我们想把关键词出现在标题中的优先显示. 测试于:Solr 4.5.1, Jdk 1.6.0_45, Tomcat 6.0.37 | CentOS 5.7 实现 ...
- 【MVC】使用FormCollection获取Form表单数据
public ActionResult Create(FormCollection form) { string name = form["name"]; //姓名 string ...
- linux命令之信息显示与搜索文件命令
1.uname:显示系统信息 该命令用于显示系统相关的信息,比如内核版本号,硬件架构等. 参数 说明 -n(常用) 显示主机名称 -r(常用) 显示内核发行版本号 示例: 1)显示主机名 [root@ ...