Java基础【冒泡、选择排序、二分查找】
冒泡排序的思路就是前一个和后一个进行比较,如果大的就交换位置 大的数字后浮
如 12 8 5 31
第一轮 8 5 12 31
第二轮 5 8 12 31
........
代码如下
package com.zuoyan.sort; /**
* 冒泡排序
* @author Administrator
*
*/
public class BubbloSortDemo { public static void main(String[] args) { int []arr = {10,8,20,3,6,22,16};
for(int i =0 ;i< arr.length;i++)
{
for(int j =0; j<arr.length-1-i;j++)
{
if(arr[j]>arr[j+1])
{
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1]= temp;
}
}
} for (int i : arr) {
System.out.println(i); } } }
2.选择排序
思路就是 将这个数组从头开始遍历
从第一个开始 与他后面的每个数字进行比较,如果遇见比他小的 这个两个数字进行交换位置,
第二个也是,也是从他后面的进行比较,不用比较第一个了,因为第一个已经是整个数组中的最小数字了
.......
代码如下
package com.zuoyan.sort; /**
* 选择排序
* @author Administrator
*
*/
public class SelectSort { public static void main(String[] args) { int [] arr={1,12,11,8,13,89,45,22,61};
for(int i=0 ;i<arr.length;i++)
{
for(int j =i+1;j<arr.length;j++)
{
if(arr[i]>arr[j])
{
int temp =arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
} for (int i : arr) {
System.out.println(i);
}
} }
3.二分查找
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查找的表为有序表。二分查找的目的是查找出元素的索引,有个前提是数组元素必须是有序
package com.zuoyan.sort; /**
* 二分查找算法
* @author Administrator
*
*/
public class BinarySearch { public static void main(String[] args) { int[] arr = {11,22,33,44,55,66,77}; int num = 51;
int index = -1;
int min = 0;
int max = arr.length-1;
int mid = (min+max)/2;
while(true)
{
if(arr[mid] == num)
{
index = mid;
break;
} if(arr[mid]<num)
{
min = mid +1;
mid = (min+max)/2;
} if(arr[mid]>num)
{
max = mid-1;
mid =(max + min)/2;
} if(min>max)
{
break;
} } System.out.println(index); }
}
Java基础【冒泡、选择排序、二分查找】的更多相关文章
- 【Java基础】选择排序、冒泡法排序、二分法查找
1.选择排序: //改进后的选择排序,减少交换的次数 public static void sortSelect(int arr[]) { //用于存放最小数的下标 int s; for (int i ...
- 【java基础】选择排序and冒泡排序
前言 : 今天学习的是J2SE视频里的第五章,数组部分,它里面留了一个经典的作业,就是让我们去从1倒9按一定规格排序,这让我想起了学习vb的时候最最让我头疼的两种排序方法,选择排序法 和 冒泡排序法. ...
- 常见的排序算法(直接插入&选择排序&二分查找排序)
1.直接插入排序算法 源码: package com.DiYiZhang;/* 插入排序算法 * 如下进行的是插入,排序算法*/ public class InsertionSort { pub ...
- Java基础-数组常见排序方式
Java基础-数组常见排序方式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 数据的排序一般都是生序排序,即元素从小到大排列.常见的有两种排序方式:选择排序和冒泡排序.选择排序的特 ...
- UVA.10474 Where is the Marble ( 排序 二分查找 )
UVA.10474 Where is the Marble ( 排序 二分查找 ) 题意分析 大水题一道.排序好找到第一个目标数字的位置,返回其下标即可.暴力可过,强行写了一发BS,发现错误百出.应了 ...
- java基础---数组的排序算法(3)
一.排序的基本概念 排序:将一个数据元素集合或序列重新排列成按一个数据元素某个数据项值有序的序列 稳定排序:排序前和排序后相同元素的位置关系与初始序列位置一致(针对重复元素来说,相对位置不变) 不稳定 ...
- 蓝桥网试题 java 基础练习 数列排序
---------------------------------------------------------------------------------------------------- ...
- 【Java SE】如何用Java实现直接选择排序
摘要:直接选择排序属于选择排序的一种,但是它的排序算法比冒泡排序的速度要快一些,由于它的算法比较简单,所以也比较适合初学者学习掌握. 适宜人群:有一定Java SE基础,明白Java的数据类型,数组的 ...
- Java冒泡排序与选择排序
Java排序: 一.冒泡排序算法的运作如下: 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. ...
- 常用算法Java实现之选择排序
选择排序算法在每一步中选取最小值来重新排序,通过选择和交换来实现排序. 具体流程如下: 1.首先从原数组中选择最小的1个数据,将其置于第一个位置. 2.然后从剩下的数据中再选择其中最小的一个数据,并将 ...
随机推荐
- python: ImportError: cannot import name 'Style' from 'openpyxl.styles' 解决方法
import os, openpyxl from openpyxl.styles import Font, Style os.chdir("C:\\") wb = openpyxl ...
- redis常见应用场景
redis应用场景总结redis平时我们用到的地方蛮多的,下面就了解的应用场景做个总结: 1.热点数据的缓存 由于redis访问速度块.支持的数据类型比较丰富,所以redis很适合用来存储热点数据,另 ...
- HDU 2511 汉诺塔X
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2511 1,2,...,n表示n个盘子.数字大盘子就大.n个盘子放在第1根柱子上.大盘不能放在小盘上.在 ...
- win10自带虚拟机Hyper V联网
在控制面板里打开程序和功能 打开启用或关闭windows 功能 勾选Hyper-V 在windows 管理工具打开Hyper-V 管理器 打开虚拟交换机管理器 ...
- What’s WOYO PDR-007 Paintless Dent Repair Heat Induction?
when you car body with dent, which tools can fixing this problem? is there a device which with the c ...
- Top 5 Reasons to Get BMW ICOM A2 with Latest Software
Top 5 Reasons to Get BMW ICOM A2 with Latest Software 1.BMW ICOM A2 Hardware Version: V2018.03 2.Sup ...
- 搭建ELK日志分析(亲测无毒!)截图没有附上。。凑合看。搭建出来没有问题
( 1 )安装 Logstash 依赖包 JDK Logstash 的运行依赖于 Java 运行环境, Logstash 1.5 以上版本不低于 java 7 推荐使用最新版本的 Java .由于我们 ...
- GoldenGate实时投递数据到大数据平台(2)- Cassandra
简介 GoldenGate是一款可以实时投递数据到大数据平台的软件,针对apache cassandra,经过简单配置,即可实现从关系型数据将增量数据实时投递到Cassandra,以下介绍配置过程. ...
- SQL Server中调用WebService
首先要启用Ole Automation Procedures,使用sp_configure 配置时如果报错"不支持对系统目录进行即席更新",可以加上WITH OVERRIDE选项. ...
- gradle 定义打包后的项目名
war { archiveName 'ROOT.war' } 或 task makeWar(type:org.gradle.api.tasks.bundling.War) { //指定生成的jar名 ...