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

  

最新文章

  1. Maven把自己的包部署到远程仓库
  2. VS一次删除多个窗体后报错
  3. Android网格视图(GridView)
  4. Swift 中的函数
  5. iconv命令详解
  6. 如何写一个简单的Web Server(一)
  7. POJ 2115 C Looooops(扩展欧几里得)
  8. 升级cocoapods到1.2 beta版本的方法
  9. .net 开发经理的月薪
  10. c#简单实现二维数组和二维数组列表List&amp;lt;&amp;gt;的转置
  11. Jenkins简明入门(一) -- 安装
  12. 41. First Missing Positive(困难, 用到 counting sort 方法)
  13. tomcat启动成功后访问却404
  14. [FJOI2016]神秘数(脑洞+可持久化)
  15. 给tomcat 配置https
  16. java序列化问题
  17. MySQL : 数据库和表的基本操作总结
  18. 7-26 Harry Potter&#39;s Exam(25 分)
  19. sitecore 缓存管理器
  20. 学习Python最好的方法就是实践和教程并行,以下有一些资源和教程,还有一些学习思维导图:

热门文章

  1. 【Codeforces Round #432 (Div. 1) A】 Five Dimensional Points
  2. COGS——C 14. [网络流24题] 搭配飞行员
  3. Php无限层级并显示层级数
  4. pragma pack,字节对齐
  5. 折腾了我两天的springboot数据源datasource循环依赖问题,都被搞疯掉了
  6. C#复习题
  7. Maven报错Missing artifact jdk.tools:jdk.tools:jar:1.7--转
  8. akka---Getting Started Tutorial (Java): First Chapter
  9. angular 引入material-ui
  10. get_mysql_conn_info.py