已知9名學生的資訊,每個學生資訊包括編號和姓名。學生資訊為11,王紅,22,劉軍,47,王亮,92,張強,16,吳迪,3,李偉,7,趙磊,29,錢鶴,8,孫芳。用堆排序法實現以編號為排序碼的降序排序,然後顯示有序的學生資訊。要求從文字檔案中讀取學生資訊(相鄰資料間用空白符分隔,且姓名不含有空白符)。
文字檔案編寫
#include#include#includetypedef struct
student;
void shaixuan(student s,int f,int e)
}int main()
while(!feof(fp))
fclose(fp);
printf("堆排序前:\n");
for(i=1;i<10;i++)
duipai(s,9);
printf("\n堆排序後:\n");
for(i=1;i<10;i++)
return 0;
}
輸出結果為
資料結構 排序(堆排序)
最小堆的特性說明 即任何一非葉節點的值不大於其左右孩子節點的值。堆排序最適合取topn的資料 include myheap.h int myswap int src,int desc 調整樹 arr 需要排序的陣列 root 根節點 size 樹的大小 int changetree int arr,...
資料結構 排序 堆排序
附加空間 乙個儲存最大記錄的空間 是否是穩定的排序方法 不穩定 include stdio.h define maxsize 10 typedef int keytype typedef struct recordtype typedef struct table void swap table t...
資料結構 排序 堆排序
堆排序是選擇排序中的一種,選擇排序的思想是在未排序的數列中選擇乙個最大或者最小的資料加入已排序序列,大根堆這個結構的根節點就是最大值,因此會大大方便選擇。在完全二叉樹中,根 左,右 手動建堆 第一步 順序建立一棵樹 第二步 檢查非葉子結點是否滿足 根 左,右,不滿足就將當前節點與最大的乙個孩子互換 ...