【Java常识】7.0 数组实现冒泡排序、选择排序和二分查找
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 数组实现冒泡排序、选择排序和二分查找相关推荐
- 第三次学JAVA再学不好就吃翔(part59)--冒泡排序选择排序以及二分查找
学习笔记,仅供参考 文章目录 数组高级冒泡排序 数组高级选择排序 二分查找法 数组高级冒泡排序 冒泡排序原理:设数组中有n个元素,从第一个元素开始,对相邻元素进行两两比较,两个元素中大的往后放,第一次 ...
- 挑战程序设计竞赛部分题目选择排序、二分查找找出下标、深度优先算法、求三角形max周长、蚂蚁算法、操作excel
首先提供帮助类 可能这个类还需要更新 .求最大值.求最小值.选择排序.二分查找找出下标.二分查找排好序列里面是否有那个值 public class Util {//求最大值public static ...
- Java 知识点整理-7.StringBuffer类+冒泡排序+选择排序+二分法+Arrays类+基本数据类型的包装类
1.StringBuffer类概述:线程安全的可变字符序列,一个类似于String的字符串缓冲区,但不能修改(不能像String那样用加号与其他类型数据连接),但通过某些方法调用可以改变该序列的长度和 ...
- 【02】Java进阶:09-冒泡排序、选择排序、二分查找、异常、异常的产生和处理、自定义异常、多线程
day09[排序算法.异常.多线程基础] 今日内容 冒泡排序 选择排序 二分查找 异常处理 多线程基础 教学目标 能够理解冒泡排序的执行原理 能够理解选择排序的执行原理 能够理解二分查找的执行原理 能 ...
- 【数组】—冒泡排序选择排序---【巷子】
/* 什么是冒泡排序:从头到尾比较相邻的两个数的大小,如果符合条件则进行比较 [注]:从小到大进行排序 假设有一个数组 var arr = [9,8,7,6,5,4]; 我们想要进行这个数组进行排序那 ...
- 冒泡排序、选择排序、二分查找排序
package day04.d1.shuzu; import java.util.Arrays; /** * 数组算法测试 * 冒泡排序 * 快速选择排序 * ... * @author Admini ...
- Java冒泡,快速,插入,选择排序^_^+二分算法查找
这段时间在学Java,期间学到了一些排序和查找方法.特此写来和大家交流,也方便自己的日后查看与复习. 1.下边是Java的主类: public class Get {public static voi ...
- 使用选择排序和二分查找在数组中查找数据
<Java实用教程(第5版)微课版> ISBN 978-7-302-46425-9 p29 例子5 能判断用户输入的一个整数是否在已知的数组中.程序效果如下图: 输入整数,程序判断该整数是 ...
- c语言数组项目按身高排序,过三关 Java冒泡排序选择排序插入排序小练习
材料:猴子排序,按照身高来从小到大来排序. 第一关: 老猴子带领小猴子队伍按大小逐一比较,交换,开始高矮排列队伍.(冒泡排序) 第二关: 太慢了,给第一关增加难度,进行选择排序 第三关: 最后,尝试选 ...
最新文章
- solidworks模板_SolidWorks文件属性分类和创建方法,图纸自动属性的基础
- ArcGIS使用Python脚本工具
- jq执行2次同样的方法怎么让第一次执行的不触发_他们说,这段代码你能看得懂她的开始,却猜不中她的结尾。...
- iOS之深入解析AppDelegate重构
- blog被封了文章全被删除了,郁闷
- (转)Kafka 消费者 Java 实现
- google浏览器 隐藏功能开启
- axios中出现两次请求,OPTIONS请求和GET请求
- 如何使用Native Messaging API 打开window程序
- 【BZOJ1044】【tyvj3511】【codevs1870】木棍分割,二分答案+滚动数组+前缀和DP
- Android开发环境搭建之Eclipse/AndroidStudio
- 交流:Ghost版系统安装简单分析
- Makefile变量
- ATAC-seq原理及现有技术的比较
- 漫游Kafka实战篇clientAPI
- PADS logic 和PADS layout 连接
- 使用JS完成一个简单的计算器功能
- 使用cmd命令 关机
- 2021年最完善的谷歌SEO关键词调研技巧
- 微型计算机噪声要求国标,中国噪声标准(GB noise standards)
热门文章
- 都优秀!两位硕士都发一作Nature,之后选择却截然不同!
- 正面刚CNN,Transformer居然连犯错都像人类
- 引用次数在 15000 次以上的都是什么神仙论文?
- 大道至简:算法工程师炼丹Trick手册
- 有哪些 AI 行业圈内人才能看懂的笑话?
- 6位图灵奖获得者、10多位院士在线“教学”,这套关于“人工智能下一个十年”的课程免费提供给你...
- 2020应届生「求职图鉴」,扎心了!
- 对于sync.Mutex使用注意事项
- 集成学习之Boosting
- 将来以静态网页形式展示漏洞影响产品信息