/********折半插入******/ #define N 11 #include<iostream> using namespace std; void BInsertSort(int a[],int len) { for (size_t i = 2; i!=len+1; i++) { a[0] = a[i]; size_t low = 1; size_t high = i - 1; while (low<=high) { int m = (low + high )/ 2; if (a[0] < a[m]) high = m - 1; else low = m + 1; } for (size_t j = i - 1; j >= low; j--) //low可用high代替 a[j + 1] = a[j]; a[low] = a[0]; //low可用high代替 cout << "第" << i-1 << "趟:"; for (size_t i = 1; i != len+1; i++) cout << *(a + i) << " "; cout << endl; } } int main() { int a[N] = {0}; for (size_t i = 1; i != N; i++) cin >> a[i]; BInsertSort(a,N-1); cout << "排好后结果为:" << endl; for (size_t i = 1; i !=N; i++) cout << a[i] << " "; return 0; }
折半插入排序
最新推荐文章于 2023-12-26 00:02:44 发布