#include <iostream> using namespace std; int a[] = {0, 3, 2, 1, 5, 7, 4}; int main() { int i, j, low, high, m, size, temp; size = sizeof(a)/sizeof(int); //从第二个开始向左(前)查找 for(i=1; i<size; i++) { temp = a[i]; low = 0; high = i-1; while(low <= high) { m = (low+high)/2; if(temp <= a[m]) high = m - 1; else low = m + 1; } //先右(后)移动 for(j=i; j>high+1; j--) { a[j] = a[j-1]; } a[high+1] = temp; } for(i=0; i<size; i++) { cout<<a[i]<<" "; } system("pause"); return 0; }