程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C說話完成堆排序的簡略實例

C說話完成堆排序的簡略實例

編輯:關於C++

C說話完成堆排序的簡略實例。本站提示廣大學習愛好者:(C說話完成堆排序的簡略實例)文章只能為提供參考,不一定能成為您想要的結果。以下是C說話完成堆排序的簡略實例正文


本文經由過程一個C說話完成堆排序的簡略實例,贊助年夜家拋開龐雜的概念,更好的懂得堆排序。
實例代碼以下:

void FindMaxInHeap(int arr[], const int size) {   
  for (int j = size - 1; j > 0; --j) {   
    int parent = j / 2;   
    int child = j;   
    if (j < size - 1 && arr[j] < arr[j+1]) {   
      ++child;   
    }   
    if (arr[child] > arr[parent]) {   
      int tmp = arr[child];   
      arr[child] = arr[parent];   
      arr[parent] = tmp;   
    }   
  }   
}   
void HeapSort(int arr[], const int size) {   
  for (int j = size; j > 0; --j) {   
    FindMaxInHeap(arr, j);   
    int tmp = arr[0];   
    arr[0] = arr[j - 1];   
    arr[j - 1] = tmp;   
  }   
}   
 
int main() 
{ 
  int arr[] = {2, 5, 3, 12, 6, 21, 8, 1};   
  int n = sizeof(arr) / sizeof(arr[0]);   
  HeapSort(arr, n);   
  for (int j = 0; j < n; ++j) {   
    printf("%3d",arr[j]);   
  }   
  printf("\n");   
return 0; 
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved