1. package javafirst;
  2.  
  3. import java.util.Arrays;
  4.  
  5. class MaoPao{
  6. //升序排列
  7. /**
  8. * @param arr 要排序的数组
  9. * @return int型排序好的升序数组
  10. */
  11. public int[] ascendSort(int[] arr){
  12. for(int i = 0; i < arr.length - 1; i++){
  13. for(int k = 0; k < arr.length - 1 - i; k ++){
  14. if (arr[k] > arr[k+1]){
  15. int temp = arr[k];
  16. arr[k] = arr[k+1];
  17. arr[k+1] = temp;
  18. }
  19. }
  20. }
  21. return arr;
  22. }
  23. //降序排序
  24. /**
  25. * @param arr 需要排序的数组
  26. * @return int型降序数组
  27. */
  28. public int[] descendSort(int[] arr){
  29. for(int i = 0; i < arr.length - 1; i++){
  30. for(int k = 0; k < arr.length - 1 - i; k ++){
  31. if (arr[k] < arr[k+1]){
  32. int temp = arr[k];
  33. arr[k] = arr[k+1];
  34. arr[k+1] = temp;
  35. }
  36. }
  37. }
  38. return arr;
  39. }
  40. }
  41. class binarySearch{
  42. //二分法查找
  43.  
  44. /**
  45. * @param sortArray 升序排序完的数组
  46. * @param value 要在数组中查找的数字
  47. * @return 返回int型索引值
  48. */
  49. public int aSearch(int[] sortArray , int value){
  50. int low = 0;
  51. int high = sortArray.length - 1;
  52. while(low <= high){
  53. int middle = (low + high) / 2;
  54. if(value > sortArray[middle]){
  55. low = middle + 1;
  56. }else if(value < sortArray[middle]){
  57. high = middle - 1;
  58. }else{
  59. return middle;
  60. }
  61. }
  62. return -1;
  63. }
  64. /**
  65. * @param sortArray 降序排序完的数组
  66. * @param value 要在数组中查找的数字
  67. * @return 返回int型索引值
  68. */
  69. public int deSearch(int[] sortArray , int value){
  70. int low = 0;
  71. int high = sortArray.length - 1;
  72. while(low <= high){
  73. int middle = (low + high) / 2;
  74. if(value > sortArray[middle]){
  75. high = middle - 1;
  76. }else if(value < sortArray[middle]){
  77. low = middle + 1;
  78. }else{
  79. return middle;
  80. }
  81. }
  82. return -1;
  83. }
  84. }
  85. public class Test12 {
  86. public static void main(String[] args){
  87. int[] arr1 = {10,29,8,7,9,23,29,38,27,25,34,23};
  88. MaoPao mp = new MaoPao();
  89. //调用其升序方法
  90. for (int i : mp.ascendSort(arr1)){
  91. System.out.print(i + " ");
  92. }
  93. System.out.println();
  94. //调用其降序的方法
  95. for(int i :mp.descendSort(arr1)){
  96. System.out.print(i + " ");
  97. }
  98.  
  99. System.out.println();
  100.  
  101. int[] arr2 = mp.ascendSort(arr1);//排序好的升序数组
  102. binarySearch bs = new binarySearch();
  103. System.out.println(bs.aSearch(arr2, 23));//调用的为升序二分法的查找
  104.  
  105. //因为数组是降序,所以调用二分法的降序查找方法
  106. System.out.println(bs.deSearch(mp.descendSort(arr1), 27));
  107. }
  108.  
  109. }

  输出结果

  1. 7 8 9 10 23 23 25 27 29 29 34 38
  2. 38 34 29 29 27 25 23 23 10 9 8 7
  3. 5
  4. 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. 关于CSDN2013博客之星的一些看法

    最近一个周,最火的话题当然要数CSDN2013博客之星拉票了. 实话实说,从12月14日开始,我连续5天拉票. 通过QQ群.QQ好友.CSDN文章.给CSDN粉丝发私信等多种方式拉票,真是累死我了. ...

  2. 如何使用VS2008打开VS2010的解决方案

    用记事本打开VS2010的SLN文件的修改开头代码: Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Stud ...

  3. 常用到的Linux命令

    记录一下日常用到的Linux命令,就当做日志了 1.查看Linux 端口号  netstat -apn | grep 80 2.杀死进程   kill -s 9 pid (tomcat 启动不起来有可 ...

  4. 【ALearning】第四章 Android Layout组件布局(二)

    前面我们分别介绍和学习了LinearLayout(线性布局).FrameLayout(单帧布局)和AbsoluteLayout(绝对布局).这次我们要进行RelativeLayout(相对布局)和Ta ...

  5. 关于Android中设置闹钟的相对比较完善的解决方案

    我当时说承诺为大家写一个,一直没空,直到最近又有人跟我要,我决定抽时间写一个吧.确实设置闹钟是一个比较麻烦的东西.我在这里写的这个demo抽出来了封装了一个类库,大家直接调用其中的设置闹钟和取消闹钟的 ...

  6. ldd 查看程序/动态库 的依赖

    今天在帮同事查看一个问题时, 需要用到ldd, 于是就顺便看了一下ldd的实现. 好在ldd本身只是一个脚本, 而不是executable, 可以直接查看实现的代码. 根据注释: 21 # This ...

  7. 如何使stm32程序更好移植, 结构体相当于define

    原创:转载请标注引用地址 如何定义 led1对应于PA8  呢 :对于我一开始学习的方法:: #include "main.h" #define led1      GPIO_Pi ...

  8. [RxJS] Replace zip with combineLatest when combining sources of data

    This lesson will highlight the true purpose of the zip operator, and how uncommon its use cases are. ...

  9. 用css3解决移动端页面自适应横屏竖屏的思考

    之前对于横屏的webapp做过一些尝试,可是始终不是非常好的解决方式,前段时间又接触了类似的需求,尝试了感觉更好的解决方式. 之前的方法写的博客:移动网页横竖屏兼容适应的一些体会 这里举的样例还是平时 ...

  10. (三)RabbitMQ消息队列-Centos7下安装RabbitMQ3.6.1

    原文:(三)RabbitMQ消息队列-Centos7下安装RabbitMQ3.6.1 如果你看过前两章对RabbitMQ已经有了一定了解,现在已经摩拳擦掌,来吧动手吧! 用什么系统 本文使用的是Cen ...