#include <iostream.h> #include <iomanip.h> char ch[] = {'q', 'A', 'S', 'O', 'R', 'T', 'E', 'X', 'A', 'M', 'P', 'L', 'E'}; int n = 12; void shift(int k, int n) { char v; int j; v = ch[k]; j = k + k; while (j <= n) { if ((j < n) && (ch[j] < ch[j + 1])) j++; if (v < ch[j]) { ch[j / 2] = ch[j]; j *= 2; } else return; ch[j / 2] = v; } } void hpsrt(void) { int k; char tmp; for (k = n / 2; k > 0; k--) shift(k, n); cout << "No.1: "; for (k = 1; k <= n; k++) cout << ch[k]; cout << endl; for (k = n; k > 0; k--) { tmp = ch[1]; ch[1] = ch[k]; ch[k] = tmp; shift(1, k - 1); } } void main( ) { int k; hpsrt( ); cout << "No.2: "; for (k = 1; k <= n; k++) cout << ch[k]; cout << endl; }
输出:1