快排,二分查找

原创 2016年05月30日 10:03:23
// search_Bin.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

int binSearch(int a[6], int x, int len );

int posFun(int * a, int low, int heigh);


int binSearch(int a[6], int x, int len ){

	int low = 0;
	int heigh = len - 1;
	int mid;

	while (low <= heigh)
	{
		mid = (low + heigh)/2; 
		if (a[mid] < x)
		{
			low = mid + 1;
		}else{
			if(a[mid] > x){
				heigh = mid - 1;
			}else{
				return mid;
			}
		}
	}

	return -100;


}

void quickSort(int a[], int low, int heigh){

	int positacion = 0;
	positacion = posFun(a, low, heigh);

	if (low < heigh)
	{
		quickSort(a, low, positacion -1);
		quickSort(a, positacion + 1, heigh);
	}
}

int posFun(int * a, int low, int heigh){

	int var = a[low];

	//while循环退出的条件是 low == heigh 这点要注意
	while (low < heigh)
	{

		while (low < heigh && (a[heigh] > var ))
			--heigh;
		a[low] = a[heigh];

		while (low < heigh && a[low] < var)
			++low;
		a[heigh] = a[low];

	}

	a[low] = var;

	return low;

}

int _tmain(int argc, _TCHAR* argv[])
{
	int a[6] = {1, 2, 3, 4, 5, 6};

	int resultVal;

	resultVal = binSearch(a, 4, 6);

	printf("the val is %d", resultVal);

	int b[6] = {3, 1, 4, 8, 9};

	quickSort(b, 0, 5);

	
	for (int i = 0; i < 5; i++)
	{
		printf("the val is %d", b[i]);
	}

	return 0;
}

void BubbleSort(int x[],int n)
{
	int i,j;
	bool Exchange;  //记录交换标志
	for(int i=1;i < n - 1; i++)    //最多做n-1趟排序
	{
		Exchange = false;
		for(j=n-1;j>=i;--j)
		{
			if(x[j]>x[j+1])
			{
				x[0] = x[j];
				x[j] = x[j+1];
				x[j+1] = x[0];
				Exchange = true;   //发生了交换,设置标志为真.
			}
		}
		if (!Exchange )      //为发生替换,提前终止算法
			return;

	}
}

二分查找与快排算法

最近公司比较闲,想起进公司面试题,一个简单的排序。但是当时只写出了优化后的冒泡。尝试快排失败。实现low。 这两个都是用到分治的思想很容易搞混。还有一个叫二分排序的,其实就是快排的核心,二分查找和快速...
  • zxc8471
  • zxc8471
  • 2017年03月22日 11:32
  • 442

面试题目-堆排、快排、二分查找

排序面试题目 近期在忙着找工作,由于专业跨度的原因,稍微有些焦头烂额,在方向上有些失衡。有种很奇怪的感觉,我不知道换联网公司到底需要什么样的人才,(/ □ \),好了,吐槽结束了,该继续得还得继续...
  • visionarywind
  • visionarywind
  • 2016年01月09日 15:19
  • 427

快速排序和二分查找时间复杂度详解

因为二分查找每次排除掉一半的不适合值,所以对于n个元素的情况:一次二分剩下:n/2两次二分剩下:n/2/2 = n/4。。。m次二分剩下:n/(2^m)在最坏情况下是在排除到只剩下最后一个值之后得到结...
  • ZhikangFu
  • ZhikangFu
  • 2016年04月27日 10:52
  • 4329

二分查找、快速排序对比和详解

**二分查找和快速排序(binarySearch)&&(quickSort)** 这两个都是用到分治的思想很容易搞混。而且即使binarySearch是用到分治到不一定意味着递归可以通过循环实现。而且...
  • qhrqhrqhr
  • qhrqhrqhr
  • 2016年03月24日 22:19
  • 2572

快排 + 二分查找

#include #include #include #define NUM 10 void put_out(int *a, int length) { int i; pr...
  • luguangxu68
  • luguangxu68
  • 2013年02月28日 11:11
  • 256

快排,二分查找

#include #include int partition(int a[], int b, int e) { int i, j; int t; i = rand()%(e+1 - b) ...
  • zhaoqi606
  • zhaoqi606
  • 2014年05月20日 17:40
  • 407

快排&归并&二分查找

算法实验:#include #include #include #include #include #include #include #include #include using namespac...
  • algzjh
  • algzjh
  • 2017年05月29日 11:06
  • 209

SDUT2040 快排与二分查找

view plaincopyprint如果您复制代码时出现行号,请点击左边的“view plain”后再复制 #include    #include    #include  ...
  • YYMdeblog1
  • YYMdeblog1
  • 2014年08月27日 11:06
  • 220

快排和二分查找

我只是课本的搬运工,做做笔记,当练打字也可以。这里我把qsort放前面讲是因为bsearch在使用之前需要对数组进行排序,排完后才能进行查找。老师说学了快排之后就不要用冒泡排序法和选择排序法了,然而我...
  • qq_34174814
  • qq_34174814
  • 2016年04月24日 11:40
  • 592

Java基础算法:堆排,快排,二分查找

Java基础算法:堆排,快排,二分查找 1. 堆排 满二叉树:所有叶结点都有同样的深度,每个内部结点都有两个儿子 完全二叉树:若二叉树的高度为h,除第h层外,其他各层(1 ~ h -1)的结点数...
  • ChatHello
  • ChatHello
  • 2017年04月04日 12:01
  • 304
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:快排,二分查找
举报原因:
原因补充:

(最多只允许输入30个字)