Java学习 2020.1.6

栈和堆

凡是局部变量,都会存放在栈中,用完了就消失了。数组类型变量存放其中

凡是new出来的数组或对象会存放在堆中。
堆中每一个数组值都有一个地址,栈中存放数组的地址
在这里插入图片描述

Java垃圾回收机制

对象或者实体在对内存中形成垃圾,Java虚拟机会在不定时进行清理
堆的特点:内存地址值,默认初始值(初始值为0),垃圾回收机制
在这里插入图片描述
这时没有垃圾值
在这里插入图片描述
只要new,就会出现新的空间

排序

选择排序:从第一个元素开始,每个进行比较

在这里插入图片描述

// 选择排序
for(int i=0; i<ns.length-1; i++){
    for(int j=i+1; j<ns.length; j++) {
    	if(ns[i] < ns[j]) {
    		int t = ns[i];
    		ns[i] = ns[j];
    		ns[j] = t;
    	}
    } 
}

冒泡排序:相邻元素比较,可以先确定最大值放在最后

在这里插入图片描述

//冒泡排序
for (int i = 0; i < ns.length; i++) {
	for (int j = 0; j < ns.length-1-i; j++) {
		if (ns[j] < ns[j+1]) {
			int t = ns[j];
          		ns[j] = ns[j+1];
          		ns[j+1] = t;
		}
    }
}

希尔排序速度最快

查找

折半查找

比较有效,但是数组必须是有序数组

法一:比较所处位置

折半查找方法一min<=max

public static int find(int[] arr,int x) {
      int min = 0;
      int max = arr.length-1;
      int mid;
      while(min <= max) {
          mid = (min + max)/2;
          if(arr[mid]==x) {
          return mid;
      }
      else if(arr[mid] < x){
          min = mid + 1;
      }
      else if(arr[mid] > x){
          max = mid - 1;
      }
  }
      return -1;
}

法二:比较值

折半查找方法二arr[i]==x

public static int find_2(int [] arr,int x) {
		int min = 0;
		int max = arr.length-1;
		int mid = (min + max)/2;
		while(arr[mid]!=x) {
			if(arr[mid]==x) {
				return mid;
			}
			else if(arr[mid] < x){
				min = mid + 1;
			}
			else if(arr[mid] > x){
				max = mid - 1;
			}
			mid = (min + max)/2;
		}
		return -1;
	}

插入元素

在有序数组中插入元素,先判断元素是否在有序数组中,若存在就在存在的位置插入,若不存在就折半查找返回最小角标的位置

public static int insert(int [] arr,int x) {
      int min = 0;
      int max = arr.length-1;
      int mid;
      while(min <= max) {
      	mid = (min + max)/2;
      	if(arr[mid]==x) {
      		return mid;
      	}
      	else if(arr[mid] < x){
      		min = mid + 1;
      	}
      	else if(arr[mid] > x){
      		max = mid - 1;
      	}
      }
      return min;//返回元素需插入的位置
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值