排序、查找我全都要

入门算法基础宝典 之冒泡排序和二分查找

题目描述

输入n个整数,再输入整数N,查找N整数是否在输入的整数中。(要求使用二分查找)

分析:记住二分查找一定是用于有序的数据,所以一定要先进行排序,这里可以用桶排序,快速排序,冒泡排序等等,再进行二分查找。

#include
using namespace std;

int main()
{
	int a[100],n,N;
	cin>>n;
	for(int i=0;i>a[i];
	}
	//冒泡排序
	for(int i=0;ia[j+1])
			{
				int temp=a[j+1];
				a[j+1]=a[j];
				a[j]=temp;
			}	
		}		
	} 

	//二分查找
	cin>>N;
	int left=0;
	int right=n-1;
	while(leftN)
		{
			right=mid-1;
		}
		else if(a[mid]right)
	{
		cout<<"NOFIND"<
#include

int main()
{
	int a[100],n,N;
	scanf("%d",&n);
	for(int i=0;ia[j+1])
			{
				int temp=a[j+1];
				a[j+1]=a[j];
				a[j]=temp;
			}	
		}		
	} 

	//二分查找
	scanf("%d",&N);              //输入查找元素
	int left=0;
	int right=n-1;               //可以用sizeof
	while(leftN)
		{
			right=mid-1;
		}
		else if(a[mid]right)
	{
		printf("NO FIND"); 
	}
	
	return 0;
	
}

冒泡排序算法时间复杂度太高?太难了,理解不了?

试试快速排序(自己写),哈哈哈

换个例子:

题目描述

将读入的 N 个数从小到大排序后输出。C++选手前来报到,直接STL开干。

这里稍微讲解一点STL的内容吧,首先我们使用的是vector容器,它相当于一个动态数组,可以自动扩展空间大小,我们把数据放到vector容器里,要用到push_back(),然后直接调用STL自带sort算法,进行排序,默认是升序。但也可以用函数重载或者仿函数来进行降序操作。

当然各种容器都可以合理选择进行使用,但注意在list容器里面不能运用标准算法,因为list是不支持随机访问迭代器的容器,要用L.sort,相当于成员函数。(listL)

#include
using namespace std;
#include
#include

bool mycompare(int v1,int v2)
{
	return v1>v2;
}

int main()
{
	int N,temp;
	cin>>N;
	vectorv;
	for(int i=0;i>temp;
		v.push_back(temp);
	}

    sort(v.begin(),v.end());
	//sort(v.begin(),v.end(),mycompare);    //sort中函数重载,仿函数也行进行降序操作
	for(vector::iterator it=v.begin();it!=v.end();it++)
	{
		cout<<*it<<" ";
	}
	
 } 

这样就不要花脑子想了吧!哈哈哈哈!

你可能感兴趣的:(c语言,c++,算法)