void CreatDui(int* Dui);
void AdjustDui(int* Dui,int index,int max);
void DuiSort(int*Dui);
int main () {
int Dui[MaxSum+1];
for(int i = 1 ; i <= MaxSum;i++){
Dui[i] = rand()%(MaxSum*3);
// printf("%d,",Dui[i]);
}
DuiSort(Dui);
printf("\n\n");
for(int i = 1 ; i <= MaxSum;i++){
printf("%d,",Dui[i]);
}
//JSRUN引擎2.0,支持多达30种语言在线运行,全仿真在线交互输入输出。
printf("\nHello JSRUN! \n\n - from C .");
return 0;
}
void DuiSort(int*Dui){
CreatDui(Dui);
for(int i = MaxSum;i > 0; i--){
int c = Dui[1];
Dui[1] = Dui[i];
Dui[i] = c;
AdjustDui(Dui,1,i-1);
}
}
//Father is i
void CreatDui(int* Dui){
int mid = MaxSum/2;
// printf("\n\n%d",mid);
for(int i = mid;i > 0;i--){
AdjustDui(Dui,i,MaxSum);
}
}
//BigDui
void AdjustDui(int* Dui,int index,int max){
if(index>max/2) return;
if(index*2+1 <= max){
int lrflag = Dui[2*index] < Dui[2*index+1];//
int theMax = Dui[2*index]>Dui[2*index+1]
?Dui[2*index]:Dui[2*index+1];
// printf("\n%d",index);
if(Dui[index] > theMax) return;
Dui[2*index+lrflag] = Dui[index];
Dui[index] = theMax;
AdjustDui(Dui,2*index+lrflag,max);
}
if(Dui[index] < Dui[2*index]){
int c = Dui[index];
Dui[index] = Dui[2*index];
Dui[2*index] = c;
// printf("%d||",c);
}
return;
}