j'ai code suivant pour heapsortmise en œuvre de heapsort en C++
#include <iostream>
using namespace std;
void exch(int a[],int i,int j){
int s=a[i];
a[i]=a[j];
a[j]=s;
}
void sink(int a[],int k,int n){
//int n=sizeof(a)/sizeof(int);
while(2*k<=n){
int j=2*k;
if (j<n && (a[j]<a[j+1])) j++;
if (a[k]>=a[j]) break;
exch(a,k,j);
k=j;
}
}
void heapsort(int a[]){
int n=sizeof(a)/sizeof(int);
for (int k=n/2;k>=1;k--)
sink(a,k,n);
while(n>1){
exch(a,1,n--);
sink(a,1,n);
}
}
int main(){
int a[]={12,3,5,1,67,10,9.20};
int n=sizeof(a)/sizeof(int);
heapsort(a);
for (int i=0;i<n;i++){
cout<<a[i]<<" ";
}
return 0;
}
mais résultat, il me montre ressemble à ceci
12 3 5 1 67 10 9 Press any key to continue . . .
regarder aussi que dans mon tableau nombre total est 8 et ici, il me montre 7 en tant que sortie, je pense que le noyau de ce problème devrait être ce
1>c:\users\datuashvili\documents\visual studio 2010\projects\heap\heap\heap.cpp(36): warning C4244: 'initializing' : conversion from 'double' to 'int', possible loss of data
il semble que la perte possible de données tout en con convertissant de la double int code vigueur ne fonctionne pas correctement, suis-je raison ou tort s'il vous plaît me aider
merci les gars j'ai résolu en utilisant votre aide, merci beaucoup –