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冒泡排序与二分法查找的代码随笔的更多相关文章

  1. Java冒泡排序与直接选择排序代码随笔

    冒泡排序:延申的有很多种,有的是先确定最大值放到后面,有的是先确定最小值放到前边,还有就是反过来,先确定最小值的位置,但是本质都是:不断两两比较,交换位置...第一趟确定一个最大(最小)值放到前边(后 ...

  2. Java基础(50):二分法查找的非递归实现和递归实现(完整代码可运行,参考VisualGO理解更佳)

    一.概念 二分查找算法也称折半查找,是一种在有序数组中查找某一特定元素的搜索算法. 二.算法思想 搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束:如果某一特定元素大于或者 ...

  3. Java中数组二分法查找

    算法:当数组的数据量很大适宜采用该方法.采用二分法查找时,数据需是有序不重复的,如果是无序的也可通过选择排序.冒泡排序等数组排序方法进行排序之后,就可以使用二分法查找. 基本思想:假设数据是按升序排序 ...

  4. js冒泡排序与二分法查找

    冒泡排序 var attr=[1,5,7,6,3,9,2,8,4]; var zj=0; //控制比较轮数 for(var i=0;i<attr.length-1;i++) { //控制每轮的比 ...

  5. java二分法查找实现代码

    package util; class BinarySearch { static int binarySearch(int[] array,int goal){//传入排好序的数组和目标数字 int ...

  6. java数组之二分法查找

    认识: 猜字游戏 步数 所猜的数 结果 可能值的范围 0     1~100 1 50 太高 1~49 2 25 太低 26~49 3 37 太高 26~36 4 31 太低 32~36 5 34 太 ...

  7. Java冒泡排序,二分查找法

    冒泡排序 int[] arr = {1,7,6,2,8,4}; int temp ; //只需 运行 5次 for (int i = 0; i < arr.length - 1; i++) { ...

  8. java基础之二分法查找

    package p1; import java.util.*; public class Sortdob { public static void BubbleSort(int[] arr) {    ...

  9. 【Python学习笔记】-冒泡排序、插入排序、二分法查找

    原文出处:https://blog.csdn.net/yort2016/article/details/68065728 冒泡排序 主要是拿一个数与列表中所有的数进行比对,若比此数大(或者小),就交换 ...

随机推荐

  1. Mongodb总结6-数据库启动、停止、备份等命令

    #启动Mongodb默认启动,需要在/data/db,Windows下对应的目录是Mongod.exe所在磁盘分区的根目录,例如Mongodb存放在D:/Mongodb,那么对应的路径就是D:/dat ...

  2. 关于在IISserver上执行asp.net Web程序出现以下 “Could not load file or assembly。。。”问题的

    Could not load file or assembly 'System.EnterpriseServices, Version=4.0.0.0, Culture=neutral, Public ...

  3. Spring Profiles example--转载

    原文地址:http://www.mkyong.com/spring/spring-profiles-example/ Spring @Profile allow developers to regis ...

  4. 国内技术管理人员批阅google的“春运交通图”项目

    在整理一份报告的时候,偶然看到2008年春节期间google推出的“春运交通图”项目建设历程报道,很受启发,随以国内的技术管理人员眼光批阅了这篇文章,同时也是自嘲吧. 以下黑色字体是原报道,红色字体是 ...

  5. Mybatis的使用中的一些不太注意的技巧

    以下就总结一下Mybatis的使用中的一些不太注意的技巧,算是Mybatis的总结笔 1.插入时主键返回 我们向数据库插入一条记录是,使用Mybatis的<insert>是无法返回插入的主 ...

  6. P2P平台很赚钱么?

    最近几年,搞P2P网贷和财富投资相关的金融周边公司,多了很多,楼下门店和电梯里的贷款小广告,真是多啊. 大家都去搞一件事的时候,很可能是大家都觉得这件事有利可图.但事实是,赚钱的总是少数,看到别人搞的 ...

  7. Oracle10g中阻塞锁查询更简单

    http://blog.itpub.net/195110/viewspace-677572/ http://blog.sina.com.cn/s/blog_636415010100khcl.html

  8. POJ 3278 Catch That Cow(BFS 剪枝)

    题目链接:http://poj.org/problem?id=3278 这几次都是每天的第一道题都挺顺利,然后第二道题一卡一天. = =,今天的这道题7点40就出来了,不知道第二道题在下午7点能不能出 ...

  9. okhttp的简介(二)之简单封装

    前一篇文章简单的介绍了okhttp的简单使用.okhttp的简介(一):http://blog.csdn.net/wuyinlei/article/details/50579564 相信使用还是非常好 ...

  10. Nutch的日志系统 分类: H3_NUTCH 2015-02-17 20:14 261人阅读 评论(0) 收藏

    一.Nutch日志实现方式 1.Nutch使用slf4j作为日志接口,使用log4j作为具体实现.关于二者的基础,请参考 http://blog.csdn.net/jediael_lu/article ...