黑马程序员<java基础<选择,冒泡,折半,进制转换知识点>>

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

【排序中效率最高的是希尔排序】

java自带排序代码
import java.util.*;
{Arrays.sort(arr);}
冒泡 排序  
public static void bubbleSort(int[]arr)
{
   for(int x=0;x<arr.length-1;x++)  //for(int x=arr.length-1;x>0;x--)
    {                                            //for(int y-0;y<x;y++)
     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;     int []arr{1,2,8,4};
                        }
                               }
                                     }
                                             }
选择排序
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])
           {  
               int temp=arr[x];
               arr[x]=arr[y];
              arr[y]=temp;
                                 }
                         }                                    
                 }                            
  }
发现无论什么排序。都需要对满足条件的元素进行位置置换。
所以可以把这部分相同的代码提取出来,单独封装成一个函数。
public static void swap{int[]arr,int a,int b}

 int temp=arr[a];
 arr[a]=arr[b];
 arr[b]=temp;
}


完整排序编码
class Demo12
{     
      public static void main(String[ ]args)
      {     int []arr={5,2,4,1,6,7,9,8};
selectSort(arr);
            paixu(arr);
            selectSort(arr);           
}


public static void paixu(int[]arr) //让元素从小到大输出
{
 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])
{
   int a =arr[y];
   arr[y]=arr[y+1];
   arr[y+1]=a;
}}}}


public static void  selectSort(int[]arr)   

   for(int x=0;x<arr.length;x++)
   {
 System.out.print("["); 
             
          if(x!=arr.length-1)
            System.out.print(arr[x]+"];"); 
           else
 System.out.println(arr[x]+"] "); 
                                
                    }
                         }                                    
        
         }
折半查找:提高效率,但是必须要保证该数组是有序的数组
class Demo12
{     
      public static void main(String[ ]args)
      {     int []arr={1,2,5,6,7,9,8};
int x=getcha(arr,7);
            System.out.println("x="+x);           
}


public static int   getcha(int[]arr,int key)
  {    int min,max,mid;
     min=0;
     max=arr.length-1;
    mid=(min+max)/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=(min+max)/2;
}
return mid;
}
}
折半查找第二种方法
public static  int getzhao_2(int[]arr,int key)
{int min=0,max=arr.length-1,mid;
  while(min<=max)
{     mid=(min+max)/2;
      if(key>arr[mid]) 
  min=mid+1;
else if(key>arr[mid]) 
  max=mid-1;
else
return mid;
            }
return -1;}


十进制转二进制
public static void toBin=(int num)
{ StringBuffer sb=new StringBuffer();
   while(num>0)
{  sb.append(num%2);   //append 添加 算一个数存一个数
   num=num/2;
}
System.out.println(sb.reverse());}}   //sb.reverse()将sb存储中的值反转


十进制转十六进制
class Demo12
{
 public static void main(String[]args)
{     getliu(60);}
   public static void getliu(int num)
{  StringBuffer sb=new StringBuffer();
  for(int x=0;x<8;x++)
{  int temp=num&15;
  if(temp>9)
 sb.append((char)(temp-10+'A'));
   else 
sb.append(temp);
 num=num>>>4;}
System.out.println(sb.reverse());
}
}
查表法十进制 十六进制
class ArrayTest6
{
public static void main(String[]args)
{   toHex(-60);
}
public static void toHex(int num)
{if(num==0)
System.out.println(0);
return;
}
  char[]chs={'0','1','2','3',
                   '4','5','6','7',
                   '8','9','A','B',
                   'C','D','E','F'};
char[]arr=new char[8];
int pos=arr.length;
while(num!=0)
{
  int temp=num&15;
  arr[--pos]=chs[temp];
num=num>>>4;
}
System.out.println("pos="+pos);
for(int x=pos;x<arr.length;x++)

     System.out.print(arr[x]+",");
}}}
进制转换优化
 class Demo13
{
public static void main(String[]args)
{   
toHex(60);
}
 十进制转二进制     
public static void toBin(int num)
{
trans(num,1,1);
}
 十进制转八进制
public static void toBa(int num)
{
trans(num,7,3);
}
 十进制转十六进制
public static void toHex(int num)
{
trans(num,15,4);
}
public static void trans(int num,int base,int offset)
{
   char[]chs={'0','1','2','3',
                   '4','5','6','7',
                   '8','9','A','B',
                   'C','D','E','F'};
char[]arr=new char[32];
int pos=arr.length;
while(num!=0)
{ int temp=num&base;
  arr[--pos]=chs[temp];
 num=num>>>offset;
}
for(int x=pos;x<arr.length;x++)
{ System.out.print(arr[x]);
}}


二维数组
System.out.println(arr.length);//打印是二维数组的长度
System.out.println(arr[0].length);//打印二维数组中第一个一维数组长度


求三个数组加起来的总和
class Demo13
{
  public static void main(String[]args)
{int[][]arr={{1,2,3,4},{2,2,3,4},{3,4,5,6}};
int sum=0;
for(int x=0;x<arr.length;x++)
{
  for(int y=0;y<arr[x].length;y++)
{  sum=sum+arr[x][y];}}
System.out.print("sum="+sum);
}}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值