1. 程式人生 > 其它 >1002 寫出這個數,含strcpy和strlen的使用,gets和scanf的區別,白話解釋

1002 寫出這個數,含strcpy和strlen的使用,gets和scanf的區別,白話解釋

技術標籤:資料結構資料結構c++

採用堆排序堆序對序列R={8,9,2,4,12,52,3}進行排序,並輸出排序後的結果

#include <stdio.h>
#include<stdlib.h>
#define MAXSIZE 50
typedef int KeyType;

typedef struct {
	KeyType key;
}DataType;

typedef struct {
	DataType data[MAXSIZE];
	int length;
}SqList;

void AdjustHeapss(SqList* H, int s, int m)
{ DataType t; int j; t = (*H).data[s]; for (j = 2 * s; j <= m; j *= 2) { if (j < m && (*H).data[j].key < (*H).data[j + 1].key) j++; if (t.key > (*H).data[j].key) //如果孩子結點的值小於根結點的值,則不交換 break; (*H).data[s] = (*H).data[j]; s = j; } (*H).data[s] = t; //將根結點插入到正確位置
} void CreateHeap(SqList* H, int n) { //建立堆 int i; for (i = n / 2; i >= 1; i--) { AdjustHeapss(H, i, n); //從序號n/2開始建立 } } void Heapsort(SqList* H, int i) { //對順序表H進行堆排序 DataType t; CreateHeap(H, H->length); //建立堆 for (i = (*H).length; i > 1; i--) { t = (*H).data[1]; (*H).data[1] =
(*H).data[i]; (*H).data[i] = t; AdjustHeapss(H, 1, i - 1); } } void InitSeqList(SqList* L, DataType a[], int n); void DispList(SqList L, int n); void AdjustHeapss(SqList* H, int s, int m); void CreateHeap(SqList* H, int n); void Heapsort(SqList* H, int i); int main() { DataType a[] = { 8,9,2,4,12,52,3 }; int n = 7; SqList L; InitSeqList(&L, a, n); printf("排序前:"); DispList(L, n); Heapsort(&L, n); printf("結果:"); DispList(L, n); getchar(); return 0; } void InitSeqList(SqList* L, DataType a[], int n) { //初始化順序表 int i; for (i = 1; i <= n; i++) { L->data[i] = a[i - 1]; } L->length = n; } void DispList(SqList L, int n) { //輸出表中元素 int i; for (i = 1; i <= n; i++) printf("%5d", L.data[i].key); printf("\n"); }

在這裡插入圖片描述