#include//折半插入排序 using namespace std; typedef struct { int key; }ElemType; typedef struct { ElemType R[1000]; int length; }SqList; void Binsert(SqList& L) { for (int i = 2; i <= L.length; i++) { L.R[0] = L.R[i]; int low = 1, high = i - 1; while (low <= high) { int mid = (low + high)/2; if (L.R[0].key < L.R[mid].key)high = mid - 1; else low = mid + 1; } for (int j = i - 1; j >= high + 1; j--)L.R[j + 1] = L.R[j]; L.R[high + 1] = L.R[0]; } } int main() { SqList L; cin >> L.length; for (int i = 1; i <= L.length; i++) { cin >> L.R[i].key; } Binsert(L); for (int i = 1; i <= L.length; i++) { cout << L.R[i].key << " "; } }



