温故而知新-----二、数组的排序

本文介绍了一个简单的Java程序,演示了如何使用选择排序算法对整数数组进行排序,并通过折半查找实现高效查找。此外,还提供了一个插入元素到已排序数组中的练习。

有方法用也得熟悉的排序~虽然很简单,而且Java提供了有排序的方法,但是还是应该掌握,因为面试有时会考

/*
对给的数组进行排序
*/

class ArrayTest 
{
    public static void main(String[] args) 
    {
        int arr[] = {2,4,5,3,8,6,7,9,0,11,22,44};//给定的数组
        sort_Array(arr);
        int index = getIndex(arr,33);
        System.out.println("index= " + index);
    }
    /*
    练习:有一个有序的数组。想要将一个元素插入到该数组中,还要保证该数组是有序的
    */
    /*
    数组的查找方式
    */

    //定义功能,获取key第一次出现在数组中的位置,如果返回-1,代表不存在
    /*public static int getIndex(int[] arr, int key)
    {
        for (int x = 0; x < arr.length ; x++ )
        {
            if (arr[x] == key)
            {
                return x;
            }

        }
        return -1;
    }
    */

    //对于有序的数组,使用折半查找,可以提高效率。
    /*public static int getIndex(int arr[], int key)
    {
        int min = 0;
        int max = arr.length - 1;
        int mid = (min + max)/2;
        while (arr[mid] != key)
        {

            if (arr[mid] > key)
            {
                max = mid - 1;
            }
            else if (arr[mid] < key)
            {
                min = mid + 1;
            }
            mid = (min + max)/2;
            if (min > max)   //未找到返回-1
            {
                return -1;
            }
        }
        return mid;
    }
    */

    //选择排序
    public static void sort_Array(int arr[])
    {
        int temp;
        for (int x = 0; x < arr.length - 1; ++x)
        {
            for (int y = x +1; y< arr.length; ++y )
            {
                if (arr[x] > arr[y])
                {
                    temp = arr[x];
                    arr[x] = arr[y];
                    arr[y] = temp;
                } 
            }
        }

        transefer(arr);

        return;
    }

    //冒泡排序
    /*
    public static void sort_Array(int arr[])
    {
        int temp;
        for (int x = 0; x < arr.length - 1; ++x)
        {
            for (int y = 0; y < arr.length -x -1 ; ++y)
            {
                if (arr[y] > arr[y + 1])
                {
                    temp = arr[y];
                    arr[y] = arr[y + 1];
                    arr[y + 1] = temp;
                }
            }
        }

    }
    */

    //数组遍历
    public static void transefer(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.println(arr[x]+"]");
        }
    }
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值