堆排序演算法
阿新 • • 發佈:2018-12-20
#include<stdio.h> void adjustHeap(int arr[],int i,int length) { int temp=arr[i]; for(int k=2*i+1;k<length;k=k*2+1) { if(k+1<length&&arr[k]<arr[k+1]) { k++; } if(arr[k]>temp){ arr[i]=arr[k]; i=k; } else{ break; } } arr[i]=temp; } void swap(int arr[],int a,int b){ int temp=arr[a]; arr[a]=arr[b]; arr[b]=temp; } void sort(int arr[],int length) { for(int i=length/2-1;i>=0;i--) { adjustHeap(arr,i,length); } for(int j=length-1;j>0;j--) { swap(arr,0,j); adjustHeap(arr,0,j); } } int main() { int a[10]={12,56,34,23,89,67,45}; sort(a,7); for(int i=0;i<7;i++) { printf("%d ",a[i]); } }