c++很多时候要用到排序,这里给大家放几个快点的模板,方便写程序
模板演示:模板演示
模板如下:
懒人模板(系统自带排序模板,但仅限于long long长整型以内的数排序)
#include<bits/stdc++.h>
using namespace std;
int a[100],n;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n;
for (int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+n+1);
for (int i=1;i<=n;i++){
cout<<a[i];
}
}
sort排序是最简单最直接的排序方式,但是时间较长
冒泡排序:
#include<bits/stdc++.h>
using namespace std;
int n,a[100];
void bubble_sort (){
int p=0,num;
for (int i=1;i<=n;i++){
p=0;
for (int j=1;j<=n-i;j++){
if (a[j]>a[j+1]){
num=a[j+1];
a[j+1]=a[j];
a[j]=num;
p++;
}
}
if (p==0){
return;
}
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n;
for (int i=1;i<=n;i++){
cin>>a[i];
}
bubble_sort();
for (int i=1;i<=n;i++){
cout<<a[i]<<" ";
}
}
冒泡排序是相邻的两个数相比较,如果在前的数更大,则互换位置
插入排序:
#include<bits/stdc++.h>
using namespace std;
int n,a[100];
void insert_sort(){
int num;
for (int i=2;i<=n;i++){
for (int j=i;j>=1;j--){
if (a[j]>=a[j-1]){
break;
}
else {
num=a[j];
a[j]=a[j-1];
a[j-1]=num;
}
}
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n;
for (int i=1;i<=n;i++){
cin>>a[i];
}
insert_sort();
for (int i=1;i<=n;i++){
cout<<a[i]<<" ";
}
}
从所在位置持续向前移,如果前面的数字比它小,则停止
分治排序:
#include<bits/stdc++.h>
using namespace std;
int a[105],n,b[105];
void mergesort(int a[],int le,int ri){
if (le==ri){
return;
}
int mid=(ri+le)/2;
mergesort(a,le,mid);
mergesort(a,mid+1,ri);
int i=le,j=mid+1,t=le;
while (i<=mid && j<=ri){
if (a[i]<=a[j])
b[t++]=a[i++];
else
b[t++]=a[j++];
}
while (i<=mid) b[t++]=a[i++];
while (j<=ri) b[t++]=a[j++];
for (i=le;i<=ri;i++){
a[i]=b[i];
}
}
int main(){
ios::sync_with_stdio(false);
cin>>n;
for (int i=1;i<=n;i++){
cin>>a[i];
}
mergesort(a,1,n);
for (int i=1;i<=n;i++){
cout<<a[i]<<endl;
}
}
分治排序将数字分为几部分,先把一个部分的顺序排好,再整合起来
快速排序:
//bubble sort
#include<bits/stdc++.h>
using namespace std;
int n,a[100];
void bubble_sort (){
int p=0,num;
for (int i=1;i<=n;i++){
p=0;
for (int j=1;j<=n-i;j++){
if (a[j]>a[j+1]){
num=a[j+1];
a[j+1]=a[j];
a[j]=num;
p++;
}
}
if (p==0){
return;
}
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n;
for (int i=1;i<=n;i++){
cin>>a[i];
}
bubble_sort();
for (int i=1;i<=n;i++){
cout<<a[i]<<" ";
}
}
提示:最好别直接抄,因为数据可能不一样。