博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
快速排序及二分查询测试
阅读量:6870 次
发布时间:2019-06-26

本文共 1663 字,大约阅读时间需要 5 分钟。

  hot3.png

package wuliao;import java.util.Random;public class SearchTest {		public static void main(String[] args) {		SearchTest test = new SearchTest();		test.search();	}	public void search() {		int key = 0;		int[] data = new int[10000000];		Random r = new Random();		for (int i = 0; i < data.length; i++) {			data[i] = r.nextInt(data.length * 2);			if(i == data.length /3){				key = data[i];			}		}		//System.out.println(ArrayUtils.toString(data, ""));		long s = System.currentTimeMillis();		quickSort(data,0,data.length-1);		System.out.println("快速排序:数量:"+data.length + ";时间:"+(System.currentTimeMillis() - s));		//System.out.println(ArrayUtils.toString(data, ""));				s = System.currentTimeMillis();		int rt = binarySearch(data,key);		System.out.println("二分查找:时间:"+(System.currentTimeMillis() - s)+ (rt != -1?"ms ;find key index : " + rt:"have not exist"));			}		public int binarySearch(int[] data,int key){		int start = 0;		int end = data.length-1;		while(true){			int mid = (start + end)/2;			if(data[mid] > key){				start = 0;				end = mid;			}else if(data[mid] < key){				start = mid+1;			}else{				return mid;			}			if(start >= end){				return -1;			}		}			}				public void quickSort(int[] data, int left, int right) {		if(left >= right) 			return; 				int index = (left + right) / 2;		int mid = data[index];		int i = left-1, j = right+1;		while (true) {			while (data[++i] < mid);			while (data[--j] > mid);			if(i >= j){				break;			}			swap(data, i, j);		}		quickSort(data,left,i-1);		quickSort(data,j+1,right);	}		public void swap(int[] data, int i, int j) {		int t = data[i];		data[i] = data[j];		data[j] = t;	}		}

转载于:https://my.oschina.net/acooly/blog/790874

你可能感兴趣的文章
【VI】如何再执行上一个(历史)命令(已解决)
查看>>
KendoUI系列:DropDownList
查看>>
Axure7.0汉化方法
查看>>
我的MYSQL学习心得(九)
查看>>
JavaScript高级程序设计学习笔记--DOM
查看>>
Python易学就会(五)turtle绘制椭圆与递归
查看>>
echarts map地图设置外边框或者阴影
查看>>
webpack4学习总结
查看>>
vue.js vue-router history模式路由,域名二级目录子目录nginx配置
查看>>
web前端规范
查看>>
理解网页的关键渲染路径(CRP)
查看>>
使用vue-cli脚手架+webpack搭建vue项目
查看>>
Docker - 03 编排容器 Docker Compose 指令速查表
查看>>
Mybatis基本映射--INSERT
查看>>
移动 web 端屏幕适配 - rem
查看>>
聊聊hystrix的BucketedCounterStream
查看>>
50多种适合机器学习和预测应用的API,你的选择是?(2018年版本)
查看>>
【题目】【4天】寻宝
查看>>
Flutter教程(一) 十分钟了解Flutter
查看>>
maven实战第一步,eclipse创建hello-world项目
查看>>