文章标题

来源:互联网 发布:ins软件 编辑:程序博客网 时间:2024/06/07 14:33

Java排序算法

一、直接排序

/*    选择排序。    以一个角标的元素和其他元素进行比较。    在内循环第一次结束,最值出现的头角标位置上。    */    public static void selectSort(int[] arr)    {        for(int x=0; x<arr.length-1; x++)        {            for(int y=x+1; y<arr.length; y++)//为什么y的初始化值是 x+1?          因为每一次比较,                                            //都用x角标上的元素和下一个元素进          行比较。            {                if(arr[x]>arr[y])                {                    int temp = arr[x];                    arr[x] = arr[y];                    arr[y] = temp;                }            }        }      }

二、冒泡排序

 /*    冒泡排序。    比较方式:相邻两个元素进行比较。如果满足条件就进行位置置换。    原理:内循环结束一次,最值出现在尾角标位置。    */    public static void bubbleSort(int[] arr)    {        for(int x=0; x<arr.length-1; x++)        {            for(int y=0; y<arr.length-x-1; y++)//-x:让每次参与比较的元减。                                                //-1:避免角标越界。            {                if(arr[y]>arr[y+1])                {                    int temp = arr[y];                    arr[y] = arr[y+1];                    arr[y+1] = temp;                }            }        }}

三、拆半查找(二分法)

/*    为了提高查找效率,可使用折半查找的方式,注意:这种查找只对有序的数组有效。    这种方式也成为二分查找法。    */    public static int halfSeach(int[] arr,int key)    {        int min,mid,max;        min = 0;        max = arr.length-1;        mid = (max+min)/2;        while(arr[mid]!=key)        {            if(key>arr[mid])                min = mid + 1;            else if(key<arr[mid])                max = mid - 1;            if(min>max)                return -1;            mid = (max+min)/2;        }        return mid;    }

#

0 0
原创粉丝点击