博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
常见算法的记录
阅读量:6872 次
发布时间:2019-06-26

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

hot3.png

快速排序

时间复杂度 O(n*log2n)

总结起来,快排的核心算法只有两步:

1)sort排序函数中,调用分区函数partition,将大的数组分成两块,然后再分别调用sort函数,这是一个递归过程。

2)partition分区函数

public class QSort {	public static void main(String[] args) {		quicksort qs = new quicksort();		int data[] = { 44, 22, 2, 32, 54, 22, 88, 77, 99, 11 };		qs.data = data;		qs.sort(0, qs.data.length - 1);		qs.display();	}}class quicksort {	public int data[];	private int partition(int sortArray[], int low, int hight) {		int key = sortArray[low];		while (low < hight) {			while (low < hight && sortArray[hight] >= key)				hight--;			sortArray[low] = sortArray[hight];			while (low < hight && sortArray[low] <= key)				low++;			sortArray[hight] = sortArray[low];		}		sortArray[low] = key;		return low;	}	public void sort(int low, int hight) {		if (low < hight) {			int result = partition(data, low, hight);			sort(low, result - 1);			sort(result + 1, hight);		}	}	public void display() {		for (int i = 0; i < data.length; i++) {			System.out.print(data[i]);			System.out.print(" ");		}	}}

二分查找算法

public class BinarySearch {	private int rCount=0;	private int lCount=0;		/**	 * 获取递归的次数	 * @return	 */	public int getrCount() {		return rCount;	}	/**	 * 获取循环的次数	 * @return	 */	public int getlCount() {		return lCount;	}	/**	 * 执行递归二分查找,返回第一次出现该值的位置	 * @param sortedData	已排序的数组	 * @param start			开始位置	 * @param end			结束位置	 * @param findValue		需要找的值	 * @return				值在数组中的位置,从0开始。找不到返回-1	 */	public int searchRecursive(int[] sortedData,int start,int end,int findValue)	{		rCount++;		if(start<=end)		{			//中间位置			int middle=(start+end)>>1;	//相当于(start+end)/2			//中值			int middleValue=sortedData[middle];						if(findValue==middleValue)			{				//等于中值直接返回				return middle;			}			else if(findValue
>1; //相当于(start+end)/2 //中值 int middleValue=sortedData[middle]; if(findValue==middleValue) { //等于中值直接返回 return middle; } else if(findValue

转载于:https://my.oschina.net/gaohongtian/blog/494880

你可能感兴趣的文章
数据结构与算法之链表-javascript实现
查看>>
【转】mysql查看表空间占用情况
查看>>
kafka简介
查看>>
POJ 2114 点分治
查看>>
NumPy arrays and TensorFlow Tensors的区别和联系
查看>>
python - 接口自动化测试 - TestRegister - 注册接口测试用例
查看>>
ECMAScript 一元运算符
查看>>
Linux常用命令
查看>>
map侧连接
查看>>
解决walle报错:宿主机代码检出检测出错,请确认svn用户名密码无误
查看>>
实现IBatisNet的Dialect分页
查看>>
基础算法之选择排序
查看>>
使用FastDFS在CentOS上搭建简易分布式文件系统
查看>>
一致性哈希算法介绍,及java实现
查看>>
WCF 第二章 契约 异步访问服务操作
查看>>
ArcGIS Server GP服务发布与测试(基础版)
查看>>
程序猿媳妇儿注意事项 (转载)
查看>>
微信发送模版消息,PHP代码简单案例
查看>>
转载: 华为内部Web安全测试原则
查看>>
Vue中的button事件
查看>>