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. python内存增长问题

    如果你的程序没有调用什么特殊的库, 只是用了很平常的库, 而且使再循环很多的情况下, 那么建议你把循环里的程序拆出来,写成一子函数,循环子函数. 如下面格式: for   (循环) 子函数 这样程序每 ...

  2. json问题小结

    json 键值对增加.删除 obj.key='value'; // obj.key=obj[key]=eval("obj."+key); delete obj.key; vue中新 ...

  3. Jquery+Ajax+Bootstrap Paginator实现分页的拼接

    效果图如下 jsp页面引入bootstrap样式,jquery和bootstrap-paginator.js <link type="text/css" rel=" ...

  4. 【“玲珑杯”ACM比赛 Round #20 H】康娜的数学课

    [链接]http://www.ifrog.cc/acm/problem/1161 [题意] 在这里写题意 [题解] 首先x<l肯定无解; 然后,肯定是要选其中的一些数字的. 而且这些数字肯定是大 ...

  5. 芯片TPS70925

    TPS70925电源芯片 从上图中可以看出EN脚是使能脚,并且是高使能,低失能. tps70925的典型用法: 这个芯片有很多封装,我们用的是第一个:

  6. 微服务实战(一):微服务架构的优势与不足 - DockOne.io

    原文:微服务实战(一):微服务架构的优势与不足 - DockOne.io [编者的话]本文来自Nginx官方博客,是微服务系列文章的第一篇,主要探讨了传统的单体式应用的不足,以及微服务架构的优势与挑战 ...

  7. 克隆windows 2008 x64 后网络问题

    克隆windows 2008 x64 后,网卡中配置IP地址192.168.199.40 (NAT 模式) 内网无法ping 通该机器. 使用ipconfig 查看IP显示为 169.254.203. ...

  8. Debian 上创建新的用户

    Debian 上创建新的用户 使用Gnome的窗口界面创建 使用Linux的命令创建 添加用户: useradd -d /home/your_username -m your_username 添加密 ...

  9. js课程 3-9 js内置对象定时器和超时器怎么使用

    js课程 3-9 js内置对象定时器和超时器怎么使用 一.总结 一句话总结:定时器:    1.定义    sobj=setInterval(func,1000);        2.清除    cl ...

  10. arm-linux-gcc: Command not found

    老是提示arm-linux-gcc找不到,但是确实是装好了,其实是权限的问题,Ubuntu没有root权限,刚开始用碰到很多麻烦,查了好多资料,终于把arm-linux-gcc: Command no ...