Java冒泡排序与二分法查找的代码随笔
package javafirst;
import java.util.Arrays;
class MaoPao{
//升序排列
/**
* @param arr 要排序的数组
* @return int型排序好的升序数组
*/
public int[] ascendSort(int[] arr){
for(int i = 0; i < arr.length - 1; i++){
for(int k = 0; k < arr.length - 1 - i; k ++){
if (arr[k] > arr[k+1]){
int temp = arr[k];
arr[k] = arr[k+1];
arr[k+1] = temp;
}
}
}
return arr;
}
//降序排序
/**
* @param arr 需要排序的数组
* @return int型降序数组
*/
public int[] descendSort(int[] arr){
for(int i = 0; i < arr.length - 1; i++){
for(int k = 0; k < arr.length - 1 - i; k ++){
if (arr[k] < arr[k+1]){
int temp = arr[k];
arr[k] = arr[k+1];
arr[k+1] = temp;
}
}
}
return arr;
}
}
class binarySearch{
//二分法查找
/**
* @param sortArray 升序排序完的数组
* @param value 要在数组中查找的数字
* @return 返回int型索引值
*/
public int aSearch(int[] sortArray , int value){
int low = 0;
int high = sortArray.length - 1;
while(low <= high){
int middle = (low + high) / 2;
if(value > sortArray[middle]){
low = middle + 1;
}else if(value < sortArray[middle]){
high = middle - 1;
}else{
return middle;
}
}
return -1;
}
/**
* @param sortArray 降序排序完的数组
* @param value 要在数组中查找的数字
* @return 返回int型索引值
*/
public int deSearch(int[] sortArray , int value){
int low = 0;
int high = sortArray.length - 1;
while(low <= high){
int middle = (low + high) / 2;
if(value > sortArray[middle]){
high = middle - 1;
}else if(value < sortArray[middle]){
low = middle + 1;
}else{
return middle;
}
}
return -1;
}
}
public class Test12 {
public static void main(String[] args){
int[] arr1 = {10,29,8,7,9,23,29,38,27,25,34,23};
MaoPao mp = new MaoPao();
//调用其升序方法
for (int i : mp.ascendSort(arr1)){
System.out.print(i + " ");
}
System.out.println();
//调用其降序的方法
for(int i :mp.descendSort(arr1)){
System.out.print(i + " ");
}
System.out.println();
int[] arr2 = mp.ascendSort(arr1);//排序好的升序数组
binarySearch bs = new binarySearch();
System.out.println(bs.aSearch(arr2, 23));//调用的为升序二分法的查找
//因为数组是降序,所以调用二分法的降序查找方法
System.out.println(bs.deSearch(mp.descendSort(arr1), 27));
}
}
输出结果
7 8 9 10 23 23 25 27 29 29 34 38
38 34 29 29 27 25 23 23 10 9 8 7
5
4
Java冒泡排序与二分法查找的代码随笔的更多相关文章
- Java冒泡排序与直接选择排序代码随笔
冒泡排序:延申的有很多种,有的是先确定最大值放到后面,有的是先确定最小值放到前边,还有就是反过来,先确定最小值的位置,但是本质都是:不断两两比较,交换位置...第一趟确定一个最大(最小)值放到前边(后 ...
- Java基础(50):二分法查找的非递归实现和递归实现(完整代码可运行,参考VisualGO理解更佳)
一.概念 二分查找算法也称折半查找,是一种在有序数组中查找某一特定元素的搜索算法. 二.算法思想 搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束:如果某一特定元素大于或者 ...
- Java中数组二分法查找
算法:当数组的数据量很大适宜采用该方法.采用二分法查找时,数据需是有序不重复的,如果是无序的也可通过选择排序.冒泡排序等数组排序方法进行排序之后,就可以使用二分法查找. 基本思想:假设数据是按升序排序 ...
- js冒泡排序与二分法查找
冒泡排序 var attr=[1,5,7,6,3,9,2,8,4]; var zj=0; //控制比较轮数 for(var i=0;i<attr.length-1;i++) { //控制每轮的比 ...
- java二分法查找实现代码
package util; class BinarySearch { static int binarySearch(int[] array,int goal){//传入排好序的数组和目标数字 int ...
- java数组之二分法查找
认识: 猜字游戏 步数 所猜的数 结果 可能值的范围 0 1~100 1 50 太高 1~49 2 25 太低 26~49 3 37 太高 26~36 4 31 太低 32~36 5 34 太 ...
- Java冒泡排序,二分查找法
冒泡排序 int[] arr = {1,7,6,2,8,4}; int temp ; //只需 运行 5次 for (int i = 0; i < arr.length - 1; i++) { ...
- java基础之二分法查找
package p1; import java.util.*; public class Sortdob { public static void BubbleSort(int[] arr) { ...
- 【Python学习笔记】-冒泡排序、插入排序、二分法查找
原文出处:https://blog.csdn.net/yort2016/article/details/68065728 冒泡排序 主要是拿一个数与列表中所有的数进行比对,若比此数大(或者小),就交换 ...
随机推荐
- Python的数组合并
https://blog.csdn.net/hustqb/article/details/78090365 TypeError: can only concatenate list (not &quo ...
- 【河南省多校脸萌第六场 A】巴什博弈?
[链接]http://acm.nyist.me/JudgeOnline/problem.php?cid=1013&pid=5 [题意] 在这里写题意 [题解] 0..a-1 YES a..a+ ...
- Codeforces #28 C.Bath Queue (概率dp)
Codeforces Beta Round #28 (Codeforces format) 题目链接: http://codeforces.com/contest/28/problem/C 题意: 有 ...
- Php无限层级并显示层级数
今天在处理递归无限层级菜单时,遇到一个稍微烧脑的问题,如何显示当前节点所在的层级数.废话不多说,我们先看个直观的无限层级: <?php // 这里的arr是直接从数据库取出的,仅作为测试数据 $ ...
- Spring Boot中的缓存支持(一)注解配置与EhCache使用
Spring Boot中的缓存支持(一)注解配置与EhCache使用 随着时间的积累,应用的使用用户不断增加,数据规模也越来越大,往往数据库查询操作会成为影响用户使用体验的瓶颈,此时使用缓存往往是解决 ...
- TCP快速重传与快速恢复原理分析(四种不同的算法)
在TCP/IP中,快速重传和恢复(fast retransmit and recovery,FRR)是一种拥塞控制算法,它能快速恢复丢失的数据包.没有FRR,如果数据包丢失了,TCP将会使用定时器来要 ...
- C#学习笔记——常量、字段以及事件
一 常量与字段 (一) 常量 常量总是被视为静态成员,而不是实例成员.定义常量将导致创建元数据.代码引用一个常量时,编译器会在定义常量的程序集的元数据中查找该符号,提取常量的值,并将值嵌入IL中.由于 ...
- OC学习篇之---协议的概念和用法
这一篇文章我们在来看一下OC中协议的概念以及用法,协议也是OC中的一个重点,Foundation框架以及我们后面在写代码都会用到. OC中的协议就是相当于Java中的接口(抽象类),只不过OC中的名字 ...
- 前端实时消息提示的效果-websocket长轮询
WebSocket是html5新增加的特性之一,可以实现客户端和服务器彼此之间相互通信,也可以实现跨域通信,目前大部分主流浏览器都支持,iE浏览器需要10版本以上. 需求:公司项目有一个报警模块,当后 ...
- POJ 3628 Bookshelf 2 0-1背包
传送门:http://poj.org/problem?id=3628 题目看了老半天,牛来叠罗汉- -|||和书架什么关系啊.. 大意是:一群牛来叠罗汉,求超过书架的最小高度. 0-1背包的问题,对于 ...