day_06

本文介绍了四种简单的排序算法(冒泡排序、选择排序)以及两种查找算法(折半查找和顺序查找)在Java中的实现,展示了基本的编程技巧和不同查找方法的效率对比。
摘要由CSDN通过智能技术生成

1.冒泡排序

public static void main(){//降序排列
    int[] arr = {15,6,8,9,4};
    bubblesort(arr);
    for(int i = 0;i<arr.length:i++){
    System.out.println(arr[i]);//输出结果 15 9 8 6 4
    }
}
public static void bubblesort(int arr){
    for(int i = 0; i<arr.length;i++){
        //每一次的比较就不用和最后一个位置比较 可以优化为  -1-i 减少比较次数
        for(int j = 0;j<arr.length-1-i;i++){
            if(arr[j] < arr[j+1]){
            int temp = arr[j];//交换过程
            arr[j] = arr[j+1];
            arr[j+1] = temp        
            }
        }
    }

}

​

        2.选择排序

    //选择排序
	public static void main(String[] args) {
		 	int[] arr = {15,6,8,9,4};
		    Selectsort(arr);
		    for(int i = 0;i<arr.length;i++){
		    System.out.println(arr[i]);//输出结果 15 9 8 6 4
		    }
	}
	public static void Selectsort(int[] arr){
		int index;
		for (int i = 0; i < arr.length; i++) {
			//算法的基本想法  让index的每一个位置和后面的相比,找到最大的
			//放在index的位置
			index = i;
			//为啥要使用index这个变量,防止在下面对i进行的操作改变了i的值
			for (int j = i+1; j < arr.length; j++) {
				//因为做好一次循环,一定可以保证前i个位置一定是排序好的,不用再比较
				//j = i + 1  可以有效的减少比较次数
				//在后面找到一个比index所在位置更大的数,交换
				if (arr[index] < arr[j]) {
					int temp = arr[index];
					arr[index] = arr[j];
					arr[j] = temp;
				}
			}
		}
	}

3.折半查找

public class Binary01 {
//折半查找的可以大大提升效率,每一次几乎都砍掉一般的序列
//但是在进行折半查找时必须要求,待查找的序列要有序才可以
			public static void main(String[] args) {
				int[] arr = {1,3,5,6};
				int target = 3;
				System.out.println(Binary(arr, target));
			}
			public static int Binary(int[] arr,int target){//以升序为例
				int low = 0;//起始位置
				int high = arr.length - 1;//终止位置
				while( low <= high){ //循环条件
					int mid = (low+high)/2; //中间位置 
					if(arr[mid] > target){//当中间变量的值大于目标值的时 mid的右边可以不比较了
						high = mid-1;//就可以让high移动到mid的左侧一个
					}else if (arr[mid]  <target) {///当中间变量的值小于目标值的时 mid的左边可以不比较了
						low = mid+1;//就可以让low移动到mid的右侧一个
					}else
						return mid;		//找到 returnmid就可以
					}
				return -1; //没找到
			}
}

4.顺序查找  

public class Sequential01 {
//顺序查找
//依次比较就可以了
public static void main(String[] args) {
	int[] arr = {1,3,5,6};
	int target = 3;
	System.out.println(Sequential(arr, target));	
}
public static int Sequential(int[] arr,int target){
	
	for (int i = 0; i < arr.length; i++) {
		if (arr[i] == target) {
			return i;//找到了 就直接返回i
		}
	}
	return -1;//没找到返回-1
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值