ヒープソート
void Shift(int L,int R){ int i,j; int x; boolean Cont; i=L; j=2*i; Cont=true; x=data[i]; while( j <= R && Cont){ if (j < R) if (data[j] < data[j+1]) j++; if( x >= data[j]) Cont=false; else { data[i]=data[j]; i=j;j=2*i; } } data[i]=x; }
void HeapSort(int data[],int num){ int L,R; int x; L=num/2+1; R=num; while(L>1){ L--; Shift(L,R); } st+="ヒープ\n"; print(data,num); while(R>1){ x=data[1]; data[1]=data[R]; data[R]=x; R--; Shift(L,R); } st+="整列\n"; print(data,num); }