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 冒泡排序 主要是拿一个数与列表中所有的数进行比对,若比此数大(或者小),就交换 ...
随机推荐
- 关于CSDN2013博客之星的一些看法
最近一个周,最火的话题当然要数CSDN2013博客之星拉票了. 实话实说,从12月14日开始,我连续5天拉票. 通过QQ群.QQ好友.CSDN文章.给CSDN粉丝发私信等多种方式拉票,真是累死我了. ...
- 如何使用VS2008打开VS2010的解决方案
用记事本打开VS2010的SLN文件的修改开头代码: Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Stud ...
- 常用到的Linux命令
记录一下日常用到的Linux命令,就当做日志了 1.查看Linux 端口号 netstat -apn | grep 80 2.杀死进程 kill -s 9 pid (tomcat 启动不起来有可 ...
- 【ALearning】第四章 Android Layout组件布局(二)
前面我们分别介绍和学习了LinearLayout(线性布局).FrameLayout(单帧布局)和AbsoluteLayout(绝对布局).这次我们要进行RelativeLayout(相对布局)和Ta ...
- 关于Android中设置闹钟的相对比较完善的解决方案
我当时说承诺为大家写一个,一直没空,直到最近又有人跟我要,我决定抽时间写一个吧.确实设置闹钟是一个比较麻烦的东西.我在这里写的这个demo抽出来了封装了一个类库,大家直接调用其中的设置闹钟和取消闹钟的 ...
- ldd 查看程序/动态库 的依赖
今天在帮同事查看一个问题时, 需要用到ldd, 于是就顺便看了一下ldd的实现. 好在ldd本身只是一个脚本, 而不是executable, 可以直接查看实现的代码. 根据注释: 21 # This ...
- 如何使stm32程序更好移植, 结构体相当于define
原创:转载请标注引用地址 如何定义 led1对应于PA8 呢 :对于我一开始学习的方法:: #include "main.h" #define led1 GPIO_Pi ...
- [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. ...
- 用css3解决移动端页面自适应横屏竖屏的思考
之前对于横屏的webapp做过一些尝试,可是始终不是非常好的解决方式,前段时间又接触了类似的需求,尝试了感觉更好的解决方式. 之前的方法写的博客:移动网页横竖屏兼容适应的一些体会 这里举的样例还是平时 ...
- (三)RabbitMQ消息队列-Centos7下安装RabbitMQ3.6.1
原文:(三)RabbitMQ消息队列-Centos7下安装RabbitMQ3.6.1 如果你看过前两章对RabbitMQ已经有了一定了解,现在已经摩拳擦掌,来吧动手吧! 用什么系统 本文使用的是Cen ...