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 冒泡排序 主要是拿一个数与列表中所有的数进行比对,若比此数大(或者小),就交换 ...
随机推荐
- __INLINE
- Codeforces 145A-Lucky Conversion(规律)
A. Lucky Conversion time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- vue2.0 踩坑记录之组件
- did you register the component correctly? For recursive components, make sure to provide the " ...
- 把git仓库从码云迁到github,及git常用命令
前言 刚开始建仓库的时候,因为网络的原因选择了国内的码云.后来又想换成github,毕竟平时github使用率比较高. 替换远程仓库地址方式如下: git remote set-url origin ...
- 介绍array_multisort方法
介绍array_multisort方法 array_multisort — 对多个数组或多维数组进行排序.其php 手册中的说明如下: 代码如下: bool array_multisort ( ar ...
- Instruction-Set Support for Invocation of VMM-Configured Services without VMM Intervention
A processing core comprising instruction execution logic circuitry and register space. The register ...
- swift项目第三天:手写代码搭建主框架
一:先配置环境:自定义Log输出(DEBUG 和 release模式),并屏蔽后台多余的打印信息 1:屏蔽后台多余的打印信息:如果写了OS_ACTIVITY_MODE = disable 还是不行.把 ...
- VS_VERSION_INFO
VS_VERSION_INFO这里可以修改ocx的版本号
- Java 学习(20):Java Applet 基础 & Java 文档注释
-- Java Applet 基础 -- Java 文档注释 Java Applet 基础 Applet 是一种 Java 程序.它一般运行在支持 Java 的 Web 浏览器内.因为它有完整的 Ja ...
- swift学习第十六天:懒加载和tableView
懒加载 懒加载的介绍 swift中也有懒加载的方式 (苹果的设计思想:希望所有的对象在使用时才真正加载到内存中) 和OC不同的是swift有专门的关键字来实现懒加载 lazy关键字可以用于定义某一个属 ...