diff --git a/堆排序 b/堆排序 new file mode 100644 index 0000000..e0100ce --- /dev/null +++ b/堆排序 @@ -0,0 +1,61 @@ +//堆排序 + +void swap(int& a,int &b) +{ + int tmp = a; + a = b; + b = tmp; +} +void siftAdjust(int elem[],int low,int high) +{ + for(int f=low,i=2*low+1;i<=high;i=2*i+1) + { + if(ielem[i]) + { + break; + } + swap(elem[f],elem[i]); + f = i; + } + } +void heapSort(int elem[],int n) +{ + int i; + for(i=(n-2)/2;i>=0;i--) + { + + siftAdjust(elem,i,n-1); + } + for(int i=n-1;i>0;i--) + { + swap(elem[0],elem[i]); + + siftAdjust(elem,0,i-1); + + } +} + int main(void) +{ + int n = 10; + int arr[10] = {0}; + for(int i=0;i