您的位置:首页 > 职场人生

黑马程序员--选择排序、冒泡排序、二分法查找

2014-08-06 20:51 267 查看
[b]---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流!
----------------------
[/b]

选择排序
遍历数组里的每个数字,与后面的每个数字比较大小,如果符合条件则进行置换。


[java] view
plaincopy

public static void selectSort(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])  

                {  

               
4000
     int temp = arr[x];
 //暂时变量以便转换

                    arr[x] = arr[y];  

                    arr[y] = temp;  

                }  

            }  

        }  

      }  



冒泡排序

相邻的两个元素相互比较,比较规则自定义(假设由小到大排序),符合条件,交换位置,不符合条件,不用交换

[java] view
plaincopy

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

            {  

                if(arr[y]>arr[y+1])  

                {  

                    int temp = arr[y];  

                    arr[y] = arr[y+1];  

                    arr[y+1] = temp;  

                }  

            }  

        }  

}  

二分查找

使用二分查找的数组必须是有序的数组

 

[java] view
plaincopy

public static int binarySeach(int[] arr,int key)
 //返回所要查找元素的角标,若元素不存在,返回-1

    {  

        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;  

    }  



[b][b][b]---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流!
----------------------
[/b]
[/b][/b]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: