利用自定义函数Compare()函数,重写sort函数的排序规则
注意:
1. Compare()函数传入的值一般都是带&
2. Compare()如果是升序,则返回a<b;如果是降序,则返回a>b
3. Compare(int &a,int &b)表示前面的是a,后面是b。如果在某个if下要保持a和b的这种先后顺序,则返回true;如果要颠倒,则返回false
/* ------------------------------------------------- Author: wry date: 2022/3/1 10:40 Description: test ------------------------------------------------- */ #include <bits/stdc++.h> using namespace std; int arr[10]; bool Compare(int &a,int &b) { if (a%2==1 && b%2==1) { //都是奇数,从大到小 return a>b; } else if (a%2==0 && b%2==0) { //都是偶数,从小到大 return a<b; } else if (a%2==1 && b%2==0) { //a为奇数,b为偶数,奇数在偶数前面,返回true表示不换位置 return true; } else if (a%2==0 && b%2==1) { //a为偶数,b为奇数,奇数在偶数前面,返回false表示调换位置 return false; } } int main() { for (int i=0;i<10;i++) { cin >>arr[i]; } sort(arr,arr+10,Compare); for (int i=0;i<10;i++) { cout << arr[i] << " "; } return 0; }