java===算法思想锻炼

本文介绍了一个Java程序,该程序包含了几种基本的数组操作方法,包括打印数组、简单选择排序及冒泡排序等,并实现了自定义的二分查找算法。此外还展示了如何使用Java的Arrays类进行二分查找。
package cn.china;

import java.util.Arrays;

public class TestDemo {

    public static void main(String[] args) {
        int arr[]=new int[]{1,2,3,8,4,24,55,7,10};
        int array[]={1,2,3,4,5,6,7,8,9,199};
        int Index=Arrays.binarySearch(array,50);
        System.out.println(Index);
        int In=binarySearch(array, 4);
        System.out.println(In);
        //int arr[]={1,2,3,8,4,24,55,7,10};
        //printSJX(8);
        //printSJX1(5);
        //printSJX2(6);
        //print99(10);
        //print99();
        //int sum=add(100);
        //System.out.println(sum);
        //int count=count();
        //System.out.println(count);
        printArr(arr);
        arrSortM(arr);
        printArr(arr);

    }
    public static void printSJX(int height){
        for(int x=0;x<height;x++){
            for(int y=0;y<x+1;y++){
                System.out.print("*");
            }
            System.out.println();
        }
    }
    public static void printSJX1(int height){
        for(int x=0;x<height;x++){
            for(int y=5;y>x;y--){
                System.out.print(y);
            }
            System.out.println();
        }
    }
    public static void printSJX2(int height){
        for(int x=0;x<height;x++){
            for(int y=0;y<x;y++){
                System.out.print(" ");
                
            }
            for(int z=x;z<height;z++){
                System.out.print("* ");
            }
            
            System.out.println();
        }
    }
    public static void print99(int height){
        for(int x=1;x<height;x++){
            for(int y=1;y<=x;y++){
                System.out.print(y+"*"+x+"="+x*y+"\t");
            }
            System.out.println();
        }
    }
    public static void print99(){
        print99(10);
    }
    public static int add(int c){
        int sum=0;
        for(int x=0;x<c;x++){
            sum=sum+x;
            }
        return sum;
        
    }
    public static int count(){
        int z=0;
        for(int i=1;i<=100;i+=2){
            boolean f = true;
            for(int j=2;j<i;j++){
                if(i%j==0){
                f=false;
                break;
                }                
            }
            if(!f){continue;}else{
            System.out.println(i);
            z++;
            }
        }
        return z;
    }
    public static void printArr(int arr[]){
        System.out.print("[");
        for(int x=0;x<arr.length;x++){
            if(x!=arr.length-1){
            System.out.print(arr[x]+",");
            }else{
                System.out.print(arr[x]+"]");
            }
        }
    }
    public static void arrSort(int arr[]){
        for(int x=0;x<arr.length-1;x++){
            for(int y=x+1;y<arr.length;y++){
                if(arr[x]>arr[y]){
                    int temp =arr[x];
                    arr[x]=arr[y];
                    arr[y]=temp;
                }
            }
        }
        
    }
    public static void arrSortM(int arr[]){
        for(int x=0;x<arr.length-1;x++){
            for(int y=0;y<arr.length-1-x;y++){
                exchange(arr, y, y+1);
            }
        }
    }
    public static void exchange(int arr[],int x,int y){
        if(arr[x]>arr[y]){
            int temp =arr[x];
            arr[x]=arr[y];
            arr[y]=temp;
        }
    }
    
    public static int binarySearch(int arr[],int m){
        
        int min=0;
        int max=arr.length-1;
        int mid;
        while(max>=min){
            mid=(min+max)>>1;
            if(arr[mid]>m){
                max=mid-1;
            }else if(arr[mid]<m){
                min=mid+1;
            }
            else {
                 return mid;
            }
        }
        return ~min;
    }

}

 

转载于:https://www.cnblogs.com/wangyinxu/p/6503587.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值