生活随笔
收集整理的這篇文章主要介紹了
最大/最小堆排序
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
void swap(int *arr, int a, int b){//交互兩個(gè)數(shù)的位置int temp = arr[a];arr[a] = arr[b];arr[b] = temp;
}void BuildMaxHeap(int *arr, int i, int n){//建立大頂堆,進(jìn)行調(diào)整int parent = arr[i], j;for(j = 2 * i; j <= n;j *= 2){if(j < n && arr[j] < arr[j+1])j++;if(parent >= arr[j]) break;arr[i] = arr[j];i = j;}arr[i] = parent;
}void BuildMinHeap(int *arr, int i, int n){//建立小頂堆,進(jìn)行調(diào)整int parent = arr[i], j;for(j = 2 * i; j <= n;j *= 2){if(j < n && arr[j] > arr[j+1])j++;if(parent <= arr[j]) break;arr[i] = arr[j];i = j;}arr[i] = parent;
}void HeadSort(int *arr, int n){//堆排序for(int i = n/2;i >= 1;i--){//建堆
// BuildMaxHeap(arr, i, n);//最大堆BuildMinHeap(arr, i, n);//最小堆}for(int i = n;i >= 1;i--)//調(diào)整排序{swap(arr, 1, i);
// BuildMaxHeap(arr, 1, i-1);//最大堆BuildMinHeap(arr, 1, i-1);//最小堆}
}
總結(jié)
以上是生活随笔為你收集整理的最大/最小堆排序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。