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

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------




选择排序

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


[java] view plaincopy
  1. public static void selectSort(int[] arr)  //由小到大排序
  2.     {  
  3.         for(int x=0; x<arr.length-1; x++)  
  4.         {  
  5.             for(int y=x+1; y<arr.length; y++)  //只需要与后面的比较
  6.             {  
  7.                 if(arr[x]>arr[y])  
  8.                 {  
  9.                     int temp = arr[x];  //暂时变量以便转换
  10.                     arr[x] = arr[y];  
  11.                     arr[y] = temp;  
  12.                 }  
  13.             }  
  14.         }  
  15.       }  


冒泡排序

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

[java] view plaincopy
  1. public static void bubbleSort(int[] arr)  //由小到大排序
  2.     {  
  3.         for(int x=0; x<arr.length-1; x++)  
  4.         {  
  5.             for(int y=0; y<arr.length-x-1; y++)  //遍历一次后最大的元素到达最右边,所以下次不用参加比较,所以-x
  6.             {  
  7.                 if(arr[y]>arr[y+1])  
  8.                 {  
  9.                     int temp = arr[y];  
  10.                     arr[y] = arr[y+1];  
  11.                     arr[y+1] = temp;  
  12.                 }  
  13.             }  
  14.         }  
  15. }  

二分查找

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


 

[java] view plaincopy
    1. public static int binarySeach(int[] arr,int key)  //返回所要查找元素的角标,若元素不存在,返回-1
    2.     {  
    3.         int min,mid,max;  
    4.         min = 0;  
    5.         max = arr.length-1;  
    6.         mid = (max+min)/2;  
    7.    
    8.         while(arr[mid]!=key)  
    9.         {  
    10.             if(key>arr[mid])  
    11.                 min = mid + 1;  
    12.             else if(key<arr[mid])  
    13.                 max = mid - 1;  
    14.               
    15.             if(min>max)  
    16.                 return -1;  //元素不存在
    17.       
    18.             mid = (max+min)/2;  
    19.         }  
    20.         return mid;  
    21.     }  



---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值