Java小结(四)——折半查找、选择排序、冒泡排序
最常见的一些基本算法,比如折半查找,选择排序,冒泡排序。
折半查找,是它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列 即数组内元素必须是有序的才可以用折半查找的办法。
//折半查找public static int halfSearch(int arr[],int key){int min,mid,max;min=0;max=arr.length-1;while(min<=max)//在min不大于max这个条件下,不断的折半查找{mid=(min+max)/2;if(arr[mid]>key)max=mid-1;else if (arr[mid]<key) min=mid+1;elsereturn mid;}return -1;}
选择排序,是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。就相当于,军训时候排队,教练从队中选择最小的放在前面,第二小的放在第二位,以此类推。
public static void selectSort(int arr[]){for (int x=0;x<arr.length-1 ;x++ ) {for (int y=x+1;y<arr.length ;y++ ) {if(arr[x]>arr[y]){int temp=arr[x];arr[x]=arr[y];arr[y]=temp;}}}}
冒泡排序,重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。就想一块石头最终会沉下去,而最轻的会冒泡上来,也就是每次排序都会至少确定一个数的位置是最终位置。
public static void BubbleSort(int[] arr){int flag=0;//设定标志,如果第一次循环比较时没有发生交换,说明数组是升序排序,不用比较排序,提交结束循环。for (int x=0;x<arr.length-1 ;++x ) {for (int y=0;y<arr.length-x-1 ;y++ ) {if(arr[y]>arr[y+1]){int temp=arr[y];arr[y]=arr[y+1];arr[y+1]=temp;flag=1;}}if (flag==0) {System.out.println("No Sort");break;}}
}
此外,还有其他的一些排序算法,大家都可以再了解下,像快速排序,希尔排序,归并排序等。每种排序算法都有其优缺点。
Java小结(四)——折半查找、选择排序、冒泡排序相关推荐
- Java算法--第二章--查找与排序(2)递归基础--佩波那契最大公约数插入排序汉诺塔
Java算法–第二章–查找与排序(2)递归基础 一.找重复 1.找到一种划分方法 2.找到递推公式或者等价转换 都是父问题转化为求解子问题 二.找变化的量 变化的量通常要作为参数 三.找出出口 代码: ...
- 选择排序 冒泡排序 二分查找
选择排序 int [] arr = {2,48,28,32,90,12}; for(int i= 0: i < arr.length - 1;i++){ for(int j = i + 1; j ...
- 王道八大排序:直接插入排序 折半插入排序 希尔排序 冒泡排序 快速排序 归并排序 基数排序
文章目录 1.插入排序 1.1直接插入排序 1.2折半插入排序 1.3希尔排序 2.交换排序 2.1冒泡排序 2.2快速排序 3.选择排序 3.1简单选择排序 3.2堆排序 4.归并排序 5.基数排序 ...
- java基础2:this、static、final、abstract关键字、代码块、生成API工具包、继承、多态、方法重载和重写,抽象类、接口、常见异常、java权限修饰符、选择排序思想和程序和内部类
1.this关键字 this表示当前类对象的地址空间值的引用.就是说,this代表了new出来的对象 其最大作用就是解决了构造器中局部变量隐藏成员变量.即用this.变量名 = 变量名 区分. 2.s ...
- 算法图解/二分查找/简单查找/选择排序/递归算法/快速排序算法/
大 O 表示法 大 O 表示法在讨论运行时间时,log 指的都是 log2 大 O 表示法指出了算法有多快,让你能够比较操作数,它指出了算法运行时间的增速,而并非以秒为单位的速度. 大 O 表示法指出 ...
- 【算法拾遗(java描写叙述)】--- 选择排序(直接选择排序、堆排序)
选择排序的基本思想 每一趟从待排序的记录中选出关键字最小的记录,顺序放在已排好序的子文件的最后,知道所有记录排序完毕.主要有两种选择排序方法:直接选择排序(或称简单选择排序)和堆排序. 直接选择排序 ...
- 用java写一个折半查找_用Java写一个折半查找。
import java.util.Comparator; public class MyUtil { public static > int binarySearch(T[] x, T key) ...
- 选择排序-冒泡排序-归并排序-快速排序-插入排序
选择排序 基本思想: 设所排序序列个数为N,i取1,2,3-n-1,从N-i+1个记录(Ri,Ri+1-.Rn)中找出排序码最小的记录,与第i个记录交换,执行N-1次后完成序列的排序. //选择排序 ...
- 选择排序java从小到大代码_java中选择排序与归并排序的内容,详细解析
上次我们已经为大家介绍过java中插入.分治和快速排序的内容,今天再来为大家介绍一下java中选择排序与归并排序的具体内容,并且通过实际的代码为大家解析. 首先我们需要了解的是,选择排序也是一种简单直 ...
- iOS swift 选择排序 冒泡排序 快速排序
返回上级目录:iOS 算法题 三大经典排序 | 冒泡排序,选择排序,快速排序 - 知乎 文章目录 1.选择排序 2.冒泡排序 3.快速排序 1.选择排序 //选择排序 func rankSelect( ...
最新文章
- 因果图方法中的基本符号
- linux中的tasklet机制【转】
- 最全面的Linux指令大全
- Angular26 ng-content和ng-container、投影的使用
- Java 理论与实践: 用弱引用堵住内存泄漏---转载
- 计算机删除百度云盘图标,win10系统百度云盘图标删除的操作方法
- Java 运行时数据区域
- 树莓派 zero linux,树莓派 zero基本调试
- 在电脑搭建oracle服务器端,oracle 服务器端搭建(C#开发环境)
- 国际千人基因组计划数据库怎么用起来?
- 【今日CS 视觉论文速览】 9 Jan 2019
- 承接各类软件开发项目
- java 链表算法_数据结构算法Java版(一) 链表
- 【时间序列预测】基于matlab RBF神经网络时间序列预测【含Matlab源码 1336期】
- Redis数据库入门基础知识
- 人工智能核心能力包括哪些层面?
- 资阳与“华为”携手共建资阳天府云计算中心
- Vue之如何调用高德地图步骤详解
- 谷歌宣布搜索引擎多个新 AI 功能,听歌识曲 15 秒完成匹配
- php 合成图片、合成圆形图片