找字符串中最大字符(四种快速方法)

目录

第一种:利用循环不断更新最大值

第二种:利用优先队列的性质

第三种:利用qsort快速排序函数

第四种:利用sort排序函数


第一种:利用循环不断更新最大值

#include <bits/stdc++.h>
using namespace std;
string s; 
char arr[80];
int N,result;
int main()
{
	cin>>s;
	N=s.length();
	for(int i=0;i<N;i++)
	{
		result=max(result,(int)s[i]);
	}
	cout<<(char)result;
	return 0;
}

第二种:利用优先队列的性质

#include <bits/stdc++.h>
using namespace std;
int N;
string s;
int main()
{
	cin>>s;
	N=s.length();
	priority_queue<char> p;
	for(int i=0;i<N;i++)
	{
		p.push(s[i]);
	}
	cout<<p.top();
	return 0;
}

第三种:利用qsort快速排序函数

降序排列:

#include <bits/stdc++.h>
using namespace std;
int N;
char a[80];
string s;
int cmp(const void* b,const void* c)
{
	return *(char*)c-*(char*)b;
}

int main()
{
	cin>>s;
	N=s.length();
	for(int i=0;i<N;i++)
	{
		a[i]=s[i];
	}
	qsort(a,N,sizeof(a[0]),cmp);
	cout<<a[0];
	return 0;
}

升序排列:

#include <stdio.h>
#include <stdlib.h> 
int a[]={15,7,9,26,18,101,25,17,18,26,17,14,12,10,16,17,15,10,9,7,4,101};
int i;
int cmp(const void* b,const void* c)
{
	return *(int*)b-*(int*)c;
}
int main()
{
	qsort(a,22,sizeof(a[0]),cmp);
	for(i=0;i<=21;i++)
	{
		printf("%d\n",a[i]);
	}
	return 0;
}

第四种:利用sort排序函数

升序排列:

#include<bits/stdc++.h>
using namespace std;
int a[50];
int cnt;

int main()
{
	for(int i=0;i<10;i++)
	{
		cin>>a[cnt];
		cnt++;
	}
	sort(a,a+cnt);
	for(int i=0;i<cnt;i++)
	{
		cout<<a[i]<<endl;
	}
	return 0;
} 

降序排列:

#include<bits/stdc++.h>
using namespace std;
int arr[50];
int cnt;

int cmp(int a,int b)
{
	return a>b;
}
int main()
{
	for(int i=0;i<10;i++)
	{
		cin>>arr[cnt];
		cnt++;
	}
	sort(arr,arr+cnt,cmp);
	for(int i=0;i<cnt;i++)
	{
		cout<<arr[i]<<endl;
	}
	return 0;
} 

猜你喜欢

转载自blog.csdn.net/m0_71934846/article/details/128457227