JavaSE 总结4

排序:

1.冒泡排序
当我们从小到大排序的时候,我们将相邻的两个数进行比较,如果i < i - 1,就将 i 的值与 i - 1 的值进行替换,依次类推,继续比较 i 与 i + 1,当我们比较到最后面的时候,必定是最大值

public static void sort(int[] arr) {
        for (int i=0;i<arr.length-1;i++) {
            for(int j =0;j<arr.length-1-i;j++) {
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j+1] = temp;
                }
            }
        }
    }

内层比较j和j+1,外层属于规定比较次数

2.选择排序
选择排序必须有一个作为排序比较的值,可以随意选择,然后从头到尾依次比较,遇到比你选择的数值大的,就直接替换掉,然后继续往下比较,最后也是最大的会排到最后面

public static void sort(int[] arr){
	int temp;
	for(int i=0;i<arr.length-1;i++){
		temp=arr[0];
		for(int j=i+1;j<arr.length;j++){
			if(temp>arr[j]){
				arr[i]=arr[j];
				arr[j]=temp;
				temp=arr[i];
			}
		}
	}
}

3.快速排序
比较方式是从中间开始,向两边排序,就跟二分法查找有点相似,将数组多次分为两段,每次都在各自的区域中排序

public static void sort(int[] arr,int l,int r){
	int i,j,temp;
	i=l;
	j=r;
	if(i>=j){//最小值大于最大值退出
		return;
	}
	while(i!=j){
		while(i<j && arr[j]>=temp){//先比较右边,若比取得值大继续比较,直到比该值小的数
			j--;
		}
		while(i<j && arr[i]<temp){//比较左边,与上同
			i++;
		}
		if(i<j){//到此两值比较完,将两边的值替换掉
			int k=arr[i];
			arr[i]=arr[j];
			arr[j]=k;
		}
	}
	arr[l]=ar[i];//将第一遍比较完成的中间值与l替换,并将temp归位
	arr[i]=temp;
	sort(arr,l,i-1);//然后比较从0到n-1的区间
	sort(arr,i+1,r);//其次比较n+1到length
}

查找:

1.二分查找
通过从中间开始向两边查找的方式进行查询的

public static int select(int[] arr,int s,int e,int t){
	for (int i=0;i<arr.length-1;i++) {//冒泡排序
            for(int j =0;j<arr.length-1-i;j++) {
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j+1] = temp;
                }
            }
        }
	int i=(s+e)/2;
	if(t>arr[i]){
		num++;
		return select(arr,i+1,e,t);
	}
	if(t<arr[i]){
		num++;
		return select(arr,s,i-1,t);
	}
	return i;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值