二分算法,选择,冒泡排序算法
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
二分算法,选择,冒泡排序算法相关推荐
- 十大经典排序算法-选择排序算法详解
十大经典排序算法 十大经典排序算法-冒泡排序算法详解 十大经典排序算法-选择排序算法详解 十大经典排序算法-插入排序算法详解 十大经典排序算法-希尔排序算法详解 十大经典排序算法-快速排序算法详解 十 ...
- java 合并排序算法、冒泡排序算法、选择排序算法、插入排序算法、快速排序...
算法是在有限步骤内求解某一问题所使用的一组定义明确的规则.通俗点说,就是计算机解题的过程.在这个过程中,无论是形成解题思路还是编写程序,都是在实施某种算法.前者是推理实现的算法,后者是操作实现的算法. ...
- 排序算法:冒泡排序算法优化实现及分析
冒泡排序算法介绍 冒泡排序(Bubble Sort)一种交换排序,它的基本思想是:两两比较相邻记录的关键字,如果反序则交换,直到没有反序记录为止.这是书上的定义,感觉太弯弯肠子了.冒泡排序是几乎所有学 ...
- 冒泡排序算法_PHP冒泡排序算法(一)
·点击蓝字关注我们!每天获取最新的编程小知识! 源 / php中文网 源 / www.php.cn 在前面的文章中,我们给大家介绍了PHP算法系列之<PHP随机取一算法>.今天我 ...
- 【数据结构与算法】冒泡排序算法(BubbleSort)
目录 1.缘起 2.BubbleSort 算法描述 3.用图示描述 BubbleSort 算法 4.C 语言描述 5.Python 语言描述 6.Java 语言描述 7.总结 1.缘起 冒泡排序算法 ...
- C++常见排序算法——选择排序算法
首先说一下选择排序的基本算法思想: 如果有N个元素需要排序,那么首先从N个元素中找到最小的那个元素与第0位置上的元素交换,然后再从剩下的N-1个元素中找到最小的元素与第1位置上的元素交换,之后再从剩下 ...
- 排序算法——1冒泡排序算法
一.冒泡排序常规算法: 冒泡排序原理:比较相邻两元素,将值大的交换到右边(从小到大排序,也可从大到小排序): 步骤: (1)第一趟第一次比较:首先比较第一和第二个数,将小数放在前面,将大数放在后面. ...
- 【2】数据结构与算法 —— 选择排序算法
选择排序分为简单选择排序和堆排序,下面看看两个算法直接的对比. 1.简单选择排序 简单选择排序法就是通过n-i此关键字间的比较,从n-i-1个记录中选出关键字最小的记录,并且和第i个记录交换.实现如下 ...
- 冒泡排序算法和选择排序算法比较
冒泡排序算法详细内容见→冒泡排序算法. 选择排序算法详细内容见→选择排序算法. 冒泡排序算法和选择排序算法的区别: 冒泡排序是比较相邻位置的两个数:而选择排序是按顺序比较,找出最大值或者最 ...
- 【java进阶06:数组】使用一维数组模拟栈数据结构 使用二维数组模拟酒店,酒店管理系统 Arrays工具类 冒泡排序算法、选择排序算法、二分法
目录 数组 二维数组 总结 作业 Arrays工具类 数组 数组总结 及 静态初始化一维数组 /* Array:1.java语言中的数组是一种引用数据类型,不属于基本数据类型,数组的父类是Object ...
最新文章
- 去掉windows console application的dos显示
- python 字符串补齐
- 教育部:中小学生原则上不得将个人手机带入校园!不要相信手机对学习有帮助!
- 在 Flutter 中使用 NavigationRail 和 BottomNavigationBar
- principle导出html5,让Principle成为生产力工具(二)单页面中的联动
- python实验总结心得体会_Python,Pyvisa操作Agilent 86140x系列OSA
- C++中volatile关键字
- C语言(CED)输入一个任意长度的正整数,将该数逆序输出。
- vgh电压高了有什么_一文告诉你电压互感器的作用是什么?
- TFS报表管理器无权限访问的配置
- 掘金小册爬虫,将小册转成pdf
- php解析.krc,krc歌词文件解析
- (三)沟通管理风险管理采购管理@相关方管理
- 揭秘淘宝双11,亿级流量高并发是怎么抗住的?
- 3D数学——法线变换
- 3D人脸成像技术整理
- 2015年数据结构第五题(输出二叉树的最长一枝)(C/C++)
- 装部署VMware vSphere 5.5文档 (6-2) 为IBM x3850 X5服务器安装配置VMware ESXi
- 英语名字12个月的来历
- Content-Type与表单提交数据类型
热门文章
- 关于 客户端发现响应内容类型为“text/html; charset=utf-8”,但应为“text/xml”的解决方法...
- 【effective c++读书笔记】【第7章】模板和泛型编程(3)
- 一步步学习SPD2010--第十一章节--处理母版页(7)--管理Content Placeholders
- 聚类分析简单介绍(附R对应函数介绍)
- 休眠后gpio状态_STM32休眠与唤醒
- pwm调制 matlab仿真,PWM脉冲调制直流电机的simulink仿真
- js轮播图代码_javascript基础(一)——轮播图
- django报错is not a registered tag library. Must be one of
- php header 重定向 url不变_PHP实现页面跳转功能
- androidx和android的区别,【译】使用AndroidX代替Android支持库