博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java实现冒泡排序、折半查找
阅读量:6854 次
发布时间:2019-06-26

本文共 2613 字,大约阅读时间需要 8 分钟。

1、冒泡排序

public class BubbleSort{        public static void main(String[] args){            int score[] = {67, 69, 75, 87, 89, 90, 99, 100};            for (int i = 0; i < score.length -1; i++){    //最多做n-1趟排序                for(int j = 0 ;j < score.length - i - 1; j++){    //对当前无序区间score[0......length-i-1]进行排序(j的范围很关键,这个范围是在逐步缩小的)                    if(score[j] < score[j + 1]){    //把小的值交换到后面                        int temp = score[j];                        score[j] = score[j + 1];                        score[j + 1] = temp;                    }                }                            System.out.print("第" + (i + 1) + "次排序结果:");                for(int a = 0; a < score.length; a++){                    System.out.print(score[a] + "\t");                }                System.out.println("");            }                System.out.print("最终排序结果:");                for(int a = 0; a < score.length; a++){                    System.out.print(score[a] + "\t");           }        }    }

2、折半查找

public class BinarySearch {     /**     * 二分查找算法     *     * @param srcArray 有序数组     * @param key 查找元素     * @return key的数组下标,没找到返回-1     */      public static void main(String[] args) {         int srcArray[] = {3,5,11,17,21,23,28,30,32,50,64,78,81,95,101};           System.out.println(binSearch(srcArray, 0, srcArray.length - 1, 81));      }          // 二分查找递归实现       public static int binSearch(int srcArray[], int start, int end, int key) {           int mid = (end - start) / 2 + start;           if (srcArray[mid] == key) {               return mid;           }           if (start >= end) {               return -1;           } else if (key > srcArray[mid]) {               return binSearch(srcArray, mid + 1, end, key);           } else if (key < srcArray[mid]) {               return binSearch(srcArray, start, mid - 1, key);           }           return -1;       }          // 二分查找普通循环实现       public static int binSearch(int srcArray[], int key) {           int mid = srcArray.length / 2;           if (key == srcArray[mid]) {               return mid;           }             int start = 0;           int end = srcArray.length - 1;           while (start <= end) {               mid = (end - start) / 2 + start;               if (key < srcArray[mid]) {                  end = mid - 1;               } else if (key > srcArray[mid]) {                   start = mid + 1;               } else {                   return mid;               }           }           return -1;       } }

计算中间位置使用:

int mid = (end - start) / 2 + start; 

防止加法运算时可能导致的整数越界

转载于:https://www.cnblogs.com/Donnnnnn/p/5728780.html

你可能感兴趣的文章
bootstrap-datetimepicker时间控件
查看>>
第三十九天
查看>>
linux内核驱动module_init解析(2)
查看>>
代码优化中 主窗口 问题 解决
查看>>
POJ1091 跳蚤
查看>>
DUBBO本地搭建及小案例 (转)
查看>>
RabbitMQ指南之二:工作队列(Work Queues)
查看>>
软件测试2019:第八次作业—— 缺陷管理(含缺陷管理工具的配置实验)
查看>>
Go:slice
查看>>
一个android应用开发的感悟
查看>>
Qt Clipboard剪贴板简单使用
查看>>
使用UIElement.AddHandler捕获已被处理的RoutedEvent
查看>>
12.21站立会议
查看>>
SQL server 统计数据库表数量和列出所有表名称
查看>>
遍历DOM树,过滤节点
查看>>
XAML实例教程系列 - XAML传递参数到值转换类实例
查看>>
Android 推门效果
查看>>
validation-api参数校验
查看>>
H5游戏接微信小游戏的支付,满满的都是坑!
查看>>
导数、偏导数、方向导数、梯度、梯度下降
查看>>