1.0 冒泡排序原理

冒泡排序就是:轻的上浮,沉的下降。小的往前排,大的往后走。
原理:若一个N个元素的数组,两个相邻位置比较,如果前面的元素比后面的元素大就换位置。
每一次比较,都是相对最沉的到位。比较N-1次,每一次,上次一次沉到最下面放好的不用再比较,直到所有的到位为止。

2.0 冒泡排序代码实现
package edp.com.learn1;public class Demo {public static void main(String[] args) {int[] arr = { 24, 68, 84, 55, 15 };bubbleSort(arr);}public static void bubbleSort(int[] arr) {for (int i = 0; i < arr.length - 1; i++) {//外循环, N个数,只要比较N-1次就够了,最后一个数不需要比较。for (int j = 0; j < arr.length-1-i; j++) {//-1为了防止索引越界//内循环,if (arr[j]>arr[j+1]) {int temp=arr[j];arr[j]=arr[j+1];arr[j+1] = temp;}}print(arr);}}/*** 打印数组的方法*/public static void print(int[] arr) {for (int i = 0; i < arr.length; i++) {System.out.print(arr[i]+" ");}System.out.println();}
}

执行结果:

其中结果就是每一次排序的展示,可见1.0中描述的规律。对于新手小白想更轻松的学好Java提升,Java架构,web开发、大数据,数据分析,人工智能等技术,这里给大家分享系统教学资源,扩列下我尉(同英):CGMX9880 【教程/工具/方法/解疑】

3.0 选择排序的原理

选择排序:用一个索引位置上的元素,依次与其他索引位置上的元素比较。晓得在前面,大的在后面。
每一次排序的结果,都是最小值到相对最前面的位置。比较N-1次,每一次,上次一次浮到最前面放好的不用再比较,直到所有的到位为止。

4.0 选择排序的代码实现

代码示范:

package edp.com.learn1;public class Demo {public static void main(String[] args) {int[] arr = { 24, 68, 84, 55, 15 };System.out.print("初始数组为:");print(arr);System.out.println("冒泡排序:");bubbleSort(arr);System.out.println("选择排序:");selectSort(arr);}public static void bubbleSort(int[] arr) {for (int i = 0; i < arr.length - 1; i++) {// 外循环, N个数,只要比较N-1次就够了,最后一个数不需要比较。for (int j = 0; j < arr.length - 1 - i; j++) {// -1为了防止索引越界// 内循环,if (arr[j] > arr[j + 1]) {swap(arr, j, j + 1);}}print(arr);}}/**** 选择排序**/public static void selectSort(int[] arr) {for (int i = 0; i < arr.length - 1; i++) {// 外循环, N个数,只要比较N-1次就够了,最后一次不需要比较。for (int j = i + 1; j < arr.length; j++) {// 内循环,if (arr[i] > arr[j]) {swap(arr, i, j);}}print(arr);}}/**** 打印数组的方法*/public static void print(int[] arr) {for (int i = 0; i < arr.length; i++) {System.out.print(arr[i] + " ");}System.out.println();}/**** 换位操作方法 此方法只针对本类使用,不准备其他类使用,定义为私有**/private static void swap(int[] arr, int i, int j) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}
}

执行结果为:

5.0 二分查找的原理

二分查找的前提:数组元素有序。不停地折半查找直到找到该值。
比如 11 22 33 44 55 66 77 ,需要查找到22,那么二分查找,先找44,在找22,找到,返回索引。对于新手小白想更轻松的学好Java提升,Java架构,web开发、大数据,数据分析,人工智能等技术,这里给大家分享系统教学资源,扩列下我尉(同英):CGMX9880 【教程/工具/方法/解疑】
画图演示如下:

6.0 二分查找的代码实现

代码演示如下:

package edp.com.learn1;public class Demo {public static void main(String[] args) {int[] arr = { 11, 22, 33, 44, 55, 66, 77 };System.out.println(getIndex(arr, 22));System.out.println(getIndex(arr, 66));System.out.println(getIndex(arr, 88));}public static int getIndex(int[] arr, int value) {int min = 0;int max = arr.length - 1;int mid = (min + max) / 2;while (arr[mid] != value) {          //当中间值不等于要找的值,开始循环查找。if (arr[mid] < value) {          //当中间值小于要查找的值。min = mid + 1;               //最小的索引改变。} else if (arr[mid] > value) {   //当中间值大于要找的值。max = mid - 1;               //最大的索引改变。}mid = (min + max) / 2;           //无论最大还是最小改变中间索引都会随之改变。if (min>max) {                   //如果最小索引大于最大索引。没有查找的可能性。return -1;                   //返回-1,表示查找失败。}}return mid;}
}

执行结果如下:

END

【Java常识】7.0 数组实现冒泡排序、选择排序和二分查找相关推荐

  1. 第三次学JAVA再学不好就吃翔(part59)--冒泡排序选择排序以及二分查找

    学习笔记,仅供参考 文章目录 数组高级冒泡排序 数组高级选择排序 二分查找法 数组高级冒泡排序 冒泡排序原理:设数组中有n个元素,从第一个元素开始,对相邻元素进行两两比较,两个元素中大的往后放,第一次 ...

  2. 挑战程序设计竞赛部分题目选择排序、二分查找找出下标、深度优先算法、求三角形max周长、蚂蚁算法、操作excel

    首先提供帮助类 可能这个类还需要更新 .求最大值.求最小值.选择排序.二分查找找出下标.二分查找排好序列里面是否有那个值 public class Util {//求最大值public static ...

  3. Java 知识点整理-7.StringBuffer类+冒泡排序+选择排序+二分法+Arrays类+基本数据类型的包装类

    1.StringBuffer类概述:线程安全的可变字符序列,一个类似于String的字符串缓冲区,但不能修改(不能像String那样用加号与其他类型数据连接),但通过某些方法调用可以改变该序列的长度和 ...

  4. 【02】Java进阶:09-冒泡排序、选择排序、二分查找、异常、异常的产生和处理、自定义异常、多线程

    day09[排序算法.异常.多线程基础] 今日内容 冒泡排序 选择排序 二分查找 异常处理 多线程基础 教学目标 能够理解冒泡排序的执行原理 能够理解选择排序的执行原理 能够理解二分查找的执行原理 能 ...

  5. 【数组】—冒泡排序选择排序---【巷子】

    /* 什么是冒泡排序:从头到尾比较相邻的两个数的大小,如果符合条件则进行比较 [注]:从小到大进行排序 假设有一个数组 var arr = [9,8,7,6,5,4]; 我们想要进行这个数组进行排序那 ...

  6. 冒泡排序、选择排序、二分查找排序

    package day04.d1.shuzu; import java.util.Arrays; /** * 数组算法测试 * 冒泡排序 * 快速选择排序 * ... * @author Admini ...

  7. Java冒泡,快速,插入,选择排序^_^+二分算法查找

    这段时间在学Java,期间学到了一些排序和查找方法.特此写来和大家交流,也方便自己的日后查看与复习. 1.下边是Java的主类: public class Get {public static voi ...

  8. 使用选择排序和二分查找在数组中查找数据

    <Java实用教程(第5版)微课版> ISBN 978-7-302-46425-9 p29 例子5 能判断用户输入的一个整数是否在已知的数组中.程序效果如下图: 输入整数,程序判断该整数是 ...

  9. c语言数组项目按身高排序,过三关 Java冒泡排序选择排序插入排序小练习

    材料:猴子排序,按照身高来从小到大来排序. 第一关: 老猴子带领小猴子队伍按大小逐一比较,交换,开始高矮排列队伍.(冒泡排序) 第二关: 太慢了,给第一关增加难度,进行选择排序 第三关: 最后,尝试选 ...

最新文章

  1. java的byte与C#的异同引起的字符处理问题。
  2. largest-rectangle-in-histogram
  3. NYOJ 16 矩形嵌套
  4. 线程执行android的looper,handler消息小结
  5. PCL中的采集器之一OpenNI
  6. sql server 2012 复制数据库向导出现TransferDatabasesUsingSMOTransfer()异常
  7. 昂达v891w可以用u盘linux,拆机小能手——ONDA 昂达 V891w CH 双系统电脑国产平板 拆解清灰!...
  8. axure8.0注册码
  9. ubuntu/debian-bluster 用python安装 sasl 报错解决
  10. 激战2怎么选最新的服务器,选哪个服好?《激战2》高玩分析各服务器进驻人数...
  11. 关于react-router-dom 6.0.1的更新基本写法 解决Error: A <Route> is only ever to be used as the child of <Routes>
  12. [数据库] MariaDB安装及使用
  13. ueditor富文本编辑器使用百度地图自定义动态地图组件及兼容https及http协议
  14. 离婚时夫妻共同债务和个人债务如何区分
  15. 2.中继镜(增距镜)详解
  16. 【07】2.3 程序语言介绍
  17. mysql 启停脚本_mysql自己编写启停脚本
  18. 自动生成卡密SQL脚本(转载)
  19. 4.Docker 镜像加速器
  20. fluent软件模拟计算3D弯头中冲蚀现象

热门文章

  1. 北大读博手记:怎样完成自己的博士生涯?非常具有指导性!
  2. 鹅厂是如何使用 Git 的?
  3. 用python分析了30万条微博评论,毕业生与翟天临的爱恨情仇
  4. 美多商城之商品(商品列表页)
  5. 正则表达式re模块使用介绍
  6. python列表用法详解(查找、添加、删除、修改、复制、循环遍历、列表嵌套)
  7. JSP第二次作业_2小题
  8. 【NLP】博士笔记 | 深入理解深度学习语义分割
  9. 链表问题11——两个单链表相交的系列问题(一):找到有环链表的环入口节点
  10. UWP Composition API - 锁定列的FlexGrid