package com.zlhj.logic.doc;

import java.util.Arrays;

/** * 类的作用: * * @ClassName : Tser * @Author : liyang * @Date : 2019/1/19  17:00 * @Version 1.0 *//* * 冒泡排序 */public class Tser {    public static void main(String[] args) {        int[] arr = {5, 4, 7, 78, 12, 1, 9, 19, 32, 23};

        Tser tser = new Tser();        String maop = tser.maopao(arr);        System.out.println("冒泡排序后的数组为:" + maop);        String scort = tser.SelectionSort(arr);        System.out.println("选择排序后的数组为:" + scort);

        int[] arr1 = {5, 4, 7, 78, 12, 9, 19, 32, 23};        int search1 = tser.halfSearch(arr1, 5);        int search2 = tser.halfSearch(arr1, 4);        int search3 = tser.halfSearch(arr1, 7);        int search4 = tser.halfSearch(arr1, 78);        int search5 = tser.halfSearch(arr1, 12);        int search7 = tser.halfSearch(arr1, 9);        int search8 = tser.halfSearch(arr1, 19);        int search9 = tser.halfSearch(arr1, 32);        int search10 = tser.halfSearch(arr1, 23);        System.out.println("["+search1 + "," + search2 + "," + search3 + "," + search4 + "," + search5 +   "," + search7 +  "," + search8 + "," + search9 +  "," + search10+"]");    }

    //二分查找法(折半查找法)    public  int halfSearch(int[] arr,int number){        int min =0;  //最小下标        int max =arr.length-1;   //最大下标        int mid = 0;  //中间下标        while (min<max){            //没找到,更新范围继续找            mid = (min+max)/2;            if (arr[mid]>number){   //number在mid的左边                max = mid-1;  //改变最大下标            }else if(arr[mid]<number){  //number在mid的右边                min = mid+1;  //改变最小下标            }else{                return  mid;            }        }        return -1;    }

    /**     * 功能描述:冒泡排序     */    public String maopao(int[] arr) {        for (int i = 0; i < arr.length - 1; i++) {//外层循环控制排序趟数 。i从0开始循环所以要-1            for (int j = 0; j < arr.length - 1 - i; j++) {//内层循环控制每一趟排序多少次。j从0开始循环所以要-1在减去i 的长度                if (arr[j] > arr[j + 1]) {                    int temp = arr[j];                    arr[j] = arr[j + 1];                    arr[j + 1] = temp;                }            }        }        String str = Arrays.toString(arr);//使用的数组——string中的方法        return str;    }

    /**     * 选择排序     */    public String SelectionSort(int[] arr) {        /*        a) 原理:每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕。        也就是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。        基于此思想的算法主要有简单选择排序、树型选择排序和堆排序。(这里只介绍常用的简单选择排序)       b) 简单选择排序的基本思想:       给定数组:int[] arr={里面n个数据};       第1趟排序,在待排序数据arr[1]~arr[n]中选出最小的数据,       将它与arrr[1]交换;第2趟,在待排序数据arr[2]~arr[n]中选出最小的数据,       将它与r[2]交换;以此类推,第i趟在待排序数据arr[i]~arr[n]中选出最小的数据,将它与r[i]交换,直到全部排序完成。         */        //选择排序的优化        for (int i = 0; i < arr.length - 1; i++) {// 做第i趟排序            int k = i;            for (int j = k + 1; j < arr.length; j++) {// 选最小的记录                if (arr[j] < arr[k]) {                    k = j; //记下目前找到的最小值所在的位置                }            }            //在内层循环结束,也就是找到本轮循环的最小的数以后,再进行交换            if (i != k) {  //交换a[i]和a[k]                int temp = arr[i];                arr[i] = arr[k];                arr[k] = temp;            }        }        String str = Arrays.toString(arr);//使用的数组——string中的方法        return str;    }

}

转载于:https://www.cnblogs.com/liyang6/p/10292692.html

二分算法,选择,冒泡排序算法相关推荐

  1. 十大经典排序算法-选择排序算法详解

    十大经典排序算法 十大经典排序算法-冒泡排序算法详解 十大经典排序算法-选择排序算法详解 十大经典排序算法-插入排序算法详解 十大经典排序算法-希尔排序算法详解 十大经典排序算法-快速排序算法详解 十 ...

  2. java 合并排序算法、冒泡排序算法、选择排序算法、插入排序算法、快速排序...

    算法是在有限步骤内求解某一问题所使用的一组定义明确的规则.通俗点说,就是计算机解题的过程.在这个过程中,无论是形成解题思路还是编写程序,都是在实施某种算法.前者是推理实现的算法,后者是操作实现的算法. ...

  3. 排序算法:冒泡排序算法优化实现及分析

    冒泡排序算法介绍 冒泡排序(Bubble Sort)一种交换排序,它的基本思想是:两两比较相邻记录的关键字,如果反序则交换,直到没有反序记录为止.这是书上的定义,感觉太弯弯肠子了.冒泡排序是几乎所有学 ...

  4. 冒泡排序算法_PHP冒泡排序算法(一)

    ·点击蓝字关注我们!每天获取最新的编程小知识! 源 / php中文网      源 / www.php.cn 在前面的文章中,我们给大家介绍了PHP算法系列之<PHP随机取一算法>.今天我 ...

  5. 【数据结构与算法】冒泡排序算法(BubbleSort)

    目录 1.缘起 2.BubbleSort 算法描述 3.用图示描述 BubbleSort 算法 4.C 语言描述 5.Python 语言描述 6.Java 语言描述 7.总结 1.缘起 冒泡排序算法 ...

  6. C++常见排序算法——选择排序算法

    首先说一下选择排序的基本算法思想: 如果有N个元素需要排序,那么首先从N个元素中找到最小的那个元素与第0位置上的元素交换,然后再从剩下的N-1个元素中找到最小的元素与第1位置上的元素交换,之后再从剩下 ...

  7. 排序算法——1冒泡排序算法

    一.冒泡排序常规算法: 冒泡排序原理:比较相邻两元素,将值大的交换到右边(从小到大排序,也可从大到小排序): 步骤: (1)第一趟第一次比较:首先比较第一和第二个数,将小数放在前面,将大数放在后面. ...

  8. 【2】数据结构与算法 —— 选择排序算法

    选择排序分为简单选择排序和堆排序,下面看看两个算法直接的对比. 1.简单选择排序 简单选择排序法就是通过n-i此关键字间的比较,从n-i-1个记录中选出关键字最小的记录,并且和第i个记录交换.实现如下 ...

  9. 冒泡排序算法和选择排序算法比较

      冒泡排序算法详细内容见→冒泡排序算法.   选择排序算法详细内容见→选择排序算法.   冒泡排序算法和选择排序算法的区别: 冒泡排序是比较相邻位置的两个数:而选择排序是按顺序比较,找出最大值或者最 ...

  10. 【java进阶06:数组】使用一维数组模拟栈数据结构 使用二维数组模拟酒店,酒店管理系统 Arrays工具类 冒泡排序算法、选择排序算法、二分法

    目录 数组 二维数组 总结 作业 Arrays工具类 数组 数组总结 及 静态初始化一维数组 /* Array:1.java语言中的数组是一种引用数据类型,不属于基本数据类型,数组的父类是Object ...

最新文章

  1. 去掉windows console application的dos显示
  2. python 字符串补齐
  3. 教育部:中小学生原则上不得将个人手机带入校园!不要相信手机对学习有帮助!
  4. 在 Flutter 中使用 NavigationRail 和 BottomNavigationBar
  5. principle导出html5,让Principle成为生产力工具(二)单页面中的联动
  6. python实验总结心得体会_Python,Pyvisa操作Agilent 86140x系列OSA
  7. C++中volatile关键字
  8. C语言(CED)输入一个任意长度的正整数,将该数逆序输出。
  9. vgh电压高了有什么_一文告诉你电压互感器的作用是什么?
  10. TFS报表管理器无权限访问的配置
  11. 掘金小册爬虫,将小册转成pdf
  12. php解析.krc,krc歌词文件解析
  13. (三)沟通管理风险管理采购管理@相关方管理
  14. 揭秘淘宝双11,亿级流量高并发是怎么抗住的?
  15. 3D数学——法线变换
  16. 3D人脸成像技术整理
  17. 2015年数据结构第五题(输出二叉树的最长一枝)(C/C++)
  18. 装部署VMware vSphere 5.5文档 (6-2) 为IBM x3850 X5服务器安装配置VMware ESXi
  19. 英语名字12个月的来历
  20. Content-Type与表单提交数据类型

热门文章

  1. 关于 客户端发现响应内容类型为“text/html; charset=utf-8”,但应为“text/xml”的解决方法...
  2. 【effective c++读书笔记】【第7章】模板和泛型编程(3)
  3. 一步步学习SPD2010--第十一章节--处理母版页(7)--管理Content Placeholders
  4. 聚类分析简单介绍(附R对应函数介绍)
  5. 休眠后gpio状态_STM32休眠与唤醒
  6. pwm调制 matlab仿真,PWM脉冲调制直流电机的simulink仿真
  7. js轮播图代码_javascript基础(一)——轮播图
  8. django报错is not a registered tag library. Must be one of
  9. php header 重定向 url不变_PHP实现页面跳转功能
  10. androidx和android的区别,【译】使用AndroidX代替Android支持库