A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhaoweiyan 中级黑马   /  2015-4-28 22:15  /  724 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.util.Scanner;

class ArraySort
{
        public static void main(String[] args)
        {
                int[] arr={1,8,3,6,23,53,12,56};

                Print(arr);//----------------------------------------------------------------打印数组

                //sort(arr);//----------------------------------------------------------------冒泡排序数组

                selectSort(arr);//----------------------------------------------------------------选择排序数组

                Print(arr);//----------------------------------------------------------------排序后打印数组
                System.out.print("以排序,请输入要查找的数:");

                Scanner sc=new Scanner(System.in);
                int shu=sc.nextInt();//----------------------------------------------------------------键盘录入要查找的数

                //int index=search(arr,shu);
                int index=compareSearch(arr,shu);//------------------------------------------------------折半查找整数



                System.out.println("查找的数从0开始编号,角标是:"+index);//------------------------------输出查到的角标
               
        }
        public static void Print(int[] arr)//-----------------------------------------------------//数组打印
        {
                System.out.print("打印的数组是:");
                for(int x=0;x<arr.length;x++)
                                System.out.print(arr[x]+" ");
                System.out.println();
        }
        public static void sort(int[] arr)   //------------------------------------------------------冒泡排序,
        {
                System.out.print("冒泡排序后");
                for(int x=0;x<arr.length;x++)
                        for (int y=0;y<arr.length-x-1;y++ )
                        {
                                if(arr[y]>arr[y+1])
                                        swap(arr,y,y+1);    //-------------------------------------------------- 数组置换必须要使用swap(int arr[],int x,int y)
                        }
        }
        public static void selectSort(int[] arr)//-------------------------------------------------------选择排序
        {
                System.out.print("选择排序后");
                for(int x=0;x<arr.length;x++)
                        for(int y=x+1;y<arr.length;y++)
                                        if(arr[x]>arr[y])
                                                swap(arr,x,y);
        }
       
        public static void swap(int arr[],int x,int y)//?????????????????--------------------置换位置,这里犯了错误了,我原来用的swap(int x,int y)

        {
                int temp=arr[x];
                arr[x]=arr[y];
                arr[y]=temp;
        }
        public static int search(int arr[],int x)//-------------------------------------------折半查找法
        {
                int max=arr.length-1;
                int min=0;
                int mid=(max+min)/2;//-------------------------------------------------------------取中间的数的角标
                while(x!=arr[mid])//--------------------------------------------------------------如果查找的数不等于中间值,循环
                {
                        if(x>arr[mid])
                                min=mid+1;//----------------------------------------------------------查找的数大于中间数,中间角标加1
                        else
                                max=mid-1;//----------------------------------------------------------查找的数大于中间数,中间角标减1
                        if(min>max)
                                return -1;//----------------------------------------------------------不存在,则返回-1
                        mid=(max+min)/2;//----------------------------------------------------------中间值等于最大加最小除以2
                }
                //else
                return mid;//------------------------------------------------------------------返回角标

        }
        public static int compareSearch(int arr[],int x)//------------------------------------对比查找法
        {
                int a=0;
                if(arr[0]<arr[arr.length-1])
                     w:for(int y=0;y<arr.length;y++)
                {
                        if(x==arr[y])
                                   {
                                                        //return y;
                                                        a=y;
                                                        break w;
                                                   }
                        else
                            {
                                a=-1;
                            break w;
                                }
                }
               
                return a;
        }
}

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马