利用定义compare函数来实现复杂的排序算法 #include<iostream> #include<algorithm> using namespace std; bool comp(int lhs, int rhs) { //不发生交换的条件 要求返回真 if (lhs % 2 == 1 && rhs % 2 == 0){ return true; } else if(lhs % 2 == 1 && rhs % 2 == 1 && lhs > rhs) { return true; } else if(lhs % 2 == 0 && rhs % 2 == 0 && lhs < rhs) { return true; } else return false; } int main() { int arr[10]; while (cin >> arr[0] >> arr[1] >> arr[2] >> arr[3] >> arr[4] >> arr[5] >> arr[6] >> arr[7] >> arr[8] >> arr[9]) { sort(arr,arr + 10,comp); //comp这个函数不需要写括号(函数指针原理) for (int i = 0; i < 10; i++) { if(arr[i] % 2 == 1) cout << arr[i] << ' '; } for (int i = 0; i < 10; i++) { if (arr[i] % 2 == 0) cout << arr[i] << ' '; } } }