A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李前进 中级黑马   /  2014-3-26 01:50  /  574 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.util.*;
  2. class  ArrayTest
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 int arr[]={0,1,2,4,6,8,9};

  7.                 //在排序前打印
  8.                 System.out.print("排序前的数组:");
  9.                 printArray(arr);

  10.                 //选择排序
  11.                 //selectSort(arr);

  12.                 //冒泡排序
  13.                 //bubbleSort(arr);

  14.                 //Java自带排序
  15.                 //Arrays.sort(arr);

  16.                 //查找数组中的元素
  17.                 //int index=getIndex(arr,2);
  18.                 //System.out.println("2所在位置下角标为:"+index);

  19.                 //折半查找
  20.                 //int index=halfSearch(arr,6);
  21.                 //System.out.println("6所在位置下角标为:"+index);

  22.                 //折半查找第二种方式
  23.                 //int index=halfSearch_2(arr,6);
  24.                 //System.out.println("6所在位置下角标为:"+index);

  25.                 //在排序后打印
  26.                 //System.out.print("排序后的数组:");
  27.                 //printArray(arr);

  28.          }

  29.         //选择排序
  30.          public static void selectSort(int[] arr)
  31.           {
  32.                         for(int x=0;x<arr.length-1;x++)
  33.                         {
  34.                                 for(int y=x+1;y<arr.length;y++)
  35.                                 {
  36.                                         if(arr[x]>arr[y])
  37.                                         {
  38.                                                 //int temp=arr[x];
  39.                                                 //arr[x]=arr[y];
  40.                                                 //arr[y]=temp;
  41.                                                 swap(arr,x,y);
  42.                                          }
  43.                                  }
  44.                      }
  45.             }


  46.         //冒泡排序
  47.          public static void bubbleSort(int[] arr)
  48.           {
  49.                         for(int x=0;x<arr.length-1;x++)
  50.                         {
  51.                                 for(int y=0;y<arr.length-x-1;y++)//-x:让每一次比较的元素减少。-1,避免角标越界。
  52.                                 {
  53.                                         if(arr[y]>arr[y+1])//大于变小于就是从大到小排序
  54.                                         {
  55.                                                 //int temp=arr[y];
  56.                                                 //arr[y]=arr[y+1];
  57.                                                 //arr[y+1]=temp;
  58.                                                 swap(arr,y,y+1);
  59.                                          }
  60.                                  }
  61.                      }
  62.             }

  63.                 //换位置功能
  64.                 public static void swap(int[] arr,int a,int b)
  65.             {
  66.                         int temp=arr[a];
  67.                         arr[a]=arr[b];
  68.                         arr[b]=temp;
  69.                  }

  70.                  //查找数组中的元素,从头到尾顺序查找
  71.                  public static int getIndex(int[]arr,int key)
  72.              {
  73.                          for(int x=0;x<arr.length;x++)
  74.                          {
  75.                                  if(arr[x]==key)
  76.                                          return x;
  77.                          }
  78.                          return -1;
  79.                   }

  80.                 //折半查找,效率高,但是必须保证数组为有序数组
  81.                 public static int halfSearch(int[] arr,int key)
  82.             {
  83.                         int min=0,max=arr.length-1,mid=(max+min)/2;

  84.                         while(arr[mid]!=key)
  85.                         {
  86.                                 if(key>arr[mid])
  87.                                         min=mid+1;
  88.                                 else if(key<arr[mid])
  89.                                         max=mid-1;

  90.                                 if(min>max)
  91.                                         return -1;
  92.                                 mid=(mid+max)/2;
  93.                         }
  94.                         return mid;
  95.                 }


  96.                 //折半查找第二种方式
  97.                 public static int halfSearch_2(int[] arr,int key)
  98.             {
  99.                         int min=0,max=arr.length-1,mid=(max+min)/2;

  100.                         while(min<=max)
  101.                         {
  102.                                 mid=(max+min)>>1;

  103.                                 if(key>arr[mid])
  104.                                         min=mid+1;
  105.                                 else if(key<arr[mid])
  106.                                         max=mid-1;
  107.                                 else
  108.                                         return mid;
  109.                         }
  110.                         return -1;
  111.                 }

  112.                 //遍历数组,美化打印格式
  113.                 public static void printArray(int[] arr)
  114.                 {
  115.                         System.out.print("[");
  116.                         for(int x=0;x<arr.length;x++)
  117.                         {
  118.                                 if(x!=arr.length-1)
  119.                                         System.out.print(arr[x]+", ");
  120.                                 else
  121.                                         System.out.println(arr[x]+"]");
  122.                         }
  123.                 }

  124. }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马