JAVA基础之数组



选择排序:选择排序就是第一个元素分别跟第二个元素,第三个元素一直到最后一个元素进行比较,如果比它们大,就交换位置。用程序如下所示:


public static void main()
{
  int[] arr={34,19,11,109,46};
  for(int x=0;x<arr.length-1;x++)
 {
  for(int y=i+1;y<arr.length;y++)
       {
            if(arr[x]>arr[y])
              {
                int temp=arr[x];
                arr[x]=arr[y];
                arr[y]=temp;
               }
       }
  }
  for(int x=0;x<arr.length;x++)
{
  System.out.println(arr[x]);
 }
}

冒泡排序:

冒泡排序就是第一个元素跟第二个元素进行比较,如果比它大,就交换位置;第二个元素再跟第三个元素进行比较,如果第二个元素大于第三个就交换位置,一直比到最后一个元素。一轮下来后,最后一个角标存储的将是数组中的最大值。之后以此类推,在一次进行,得到第二大的值存储到倒数第二个角标中。实现冒泡排序的方法有两种,分别如下所示:


方式一:
for(int x=0;x<arr.length-1;x++)
{

  for(int y=0;y<arr.length-1-x;y++)
   {
         if(arr[y]>arr[y+1])
              {
                int temp=arr[y];
                arr[y]=arr[y+1];
                arr[y+1]=temp;
               }
   }
}
方式二:
for(int x=arr.length-1;x>=0;x--)
{
  for(int y=0;y<x;y++)

        if(arr[y]>arr[y+1])
              {
                int temp=arr[y];
                arr[y]=arr[y+1];
                arr[y+1]=temp;
               }
   
 }
 
}

数组常见功能:
(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;
}
(2)折半查找:取中间值进行比较,如果要找的值比中间值大,那么再取中间值的下一个到最后一个的中间值进行比较,以此类推;如果比中间值小,那么取第一个到中间值的前一个的中间值进行比较,以此类推。
public static int getIndexByHalf(int[] arr,int key)
{
     int max,min,mid;
     max=arr.length-1;
     min=0;
     mid=(max+min)/2;

     while(arr[mid]!=key)
        {
            if(key>arr[mid])
               min=mid+1; 
            else if(key<arr[mid])
         {
            max=mid-1;
           }
          if(max<min)
            return -1;
          mid=(max+min)/2;

         }
       return mid;
 
}
public static int getIndexByHalf_2(int[] arr,int key)
{
while(min<=max)
{
     mid=(max+min)>>1;
         if(key>arr[mid])
               min=mid+1; 
            else if(key<arr[mid])
        
             max=mid-1;
         
        else return mid;
  
}

return -1;
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值