1、冒泡排序
示例:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,a[100];
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
for(int i=0;i<n;i++){
for(int j=0;j<n-i-1;j++){
if(a[j]>a[j+1]){
swap(a[j],a[j+1]);
}
}
}
return 0;
}
2、桶排序(必须知道最大值,没有负数)
思想:
出现一个数就把一个数组下标为这个数加1
例如(去重):
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,a[100],t[100]={0};//n输了几个数,a[100]是输入的数,t是桶
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
t[a[i]]++;//把你当前输入的数的下标++
}
for(int i=0;i<100;i++){
if(t[i]!=0){
for(int j=0;j<t[i];j++){
cout<<i<<" ";
}
}
}
return 0;
}
3、sort函数排序:
C++自带的排序函数
sort(从哪里开始,从哪里结束);//默认从小到大
比如:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,a[105];
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
sort(a,a+n);
for(int i=0;i<n;i++){
cout<<a[i]<<" ";
return 0;
}
从大到小排序:
1、定义函数(cmp,这个函数可以自定义排序)
用法:
sort(开始的位置,结束的位置,函数名);
2、sort(a,a+n,greater<类型>());
例题1:1、第一行输入n和k(k<=n<=1000),后面几行一行输入一个要比较的数(每个数都>-32504,<32504),输出n个数中第k大的数
输入:
3 2
1 4 5
输出:
4
参考程序:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,k,a[1005];
cin>>n>>k;
for(int i=0;i<n;i++){
cin>>a[i];
}
sort(a,a+n);
cout<<a[k-1];
return 0;
}
例题2:输入数字的个数和这些数,输出最大的数的位置
输入:
4
1 3 4 5
输出:
4
参考程序:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,a[1005],t[105]={0},ma=INT_MIN,s=0;
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
t[a[i]]++;
}
for(int i=0;i<n;i++){
if(a[i]>ma){
ma=a[i];
s=i+1;
}
}
cout<<s;
return 0;
}