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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 忆梦追风 中级黑马   /  2014-9-3 21:09  /  759 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

排序
  int[] arr = {66,55,44,33,22,11};
   **1选择排序
   原理:如果拿0角标上的元素依次和后面的元素进行比较,
                       第一次内循环结束后,最小值出现在了0角标位置。
   arr[0]与arr[1-5]比了五次
   arr[1]与arr[2-5]比了四次
   arr[2]与arr[3-5]比了三次
   arr[3]与arr[4-5]比了二次
   arr[4]与arr[5]比了一次
   你就想想我们是如何打星星
   *****
   ****
   ***
   **
   *
   arr[x]与arr[y]比较
   数组长度是6
   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;
     }
    }
   }
   int[] arr = {66,55,44,33,22,11};
   **2冒泡排序
   原理:两个相邻元素进行比较,第一次比较完以后,最大值出现在了最大角标处。
   第一次:arr[0]与arr[1],arr[1]与arr[2],arr[2]与arr[3],arr[3]与arr[4],arr[4]与arr[5],比了五次
   第二次:arr[0]与arr[1],arr[1]与arr[2],arr[2]与arr[3],arr[3]与arr[4]比了四次
   第三次:arr[0]与arr[1],arr[1]与arr[2],arr[2]与arr[3]比了三次
   第四次:arr[0]与arr[1],arr[1]与arr[2]比了二次
   第五次:arr[0]与arr[1]比了一次
   for (int x = 0;x < arr.length - 1; x++){
    //-1防止角标越界
    //-x为了提高效率
    for (int y = 0;y < arr.length - 1 - x;y++){//6
     if (arr[y] > arr[y+1]){
      int temp = arr[y];
      arr[y] = arr[y+1];
      arr[y+1] = temp;
     }
    }
   }
  3,查找
  A:无序数组
  int[] arr = {33,22,11,44,55,66};
  public static int getIndex(int[] arr,int key) {
   for (int x = 0;x < arr.length;x++){
    if (key == arr[x]){
     return x;
    }
   }
   return -1;
  }
B:有序数组 二分查找
  数组长度是6,最大角标值是5
  public static int getIndex(int[] arr,int key) {
   int min = 0;
   int max = arr.length-1;
   int mid = (min + max)/2;
   while (key != arr[mid]){
    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;
   
  }
   

0 个回复

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