#include using namespace std; void InsertionSortDichotomy(int A[], int n) { //二分插入排序(类似于抓牌):从后面无序数组中取第一张牌,放到前面已经拍好的顺序中 for (int i = 1; i < n; i++) { int get = A[i];//抓新牌 //找新牌应该放入的位置,此处采取了二分查找法 int left = 0; int right = i - 1; while (left <= right) { int mid = (left + right) / 2; if (A[mid] > get) right = mid - 1; else left = mid + 1; } //找到新拍的位置,后面的牌依次后挪 for (int j = i - 1; j >= left; j--) A[j + 1] = A[j]; //空出来的位置把新牌放进去 A[left] = get; } } int main() { int N, i; cin>>N;//对N个数进行二分插入排序 int A[N]; for(i = 0; i < N; i++) cin>>A[i]; InsertionSortDichotomy(A, N); cout<