gcc c 冒泡 插入 大頂堆 排序

2021-10-17 19:50:41 字數 1474 閱讀 7751

linux centos fedora  gcc c 冒泡 插入 大頂堆 排序

1、生成50萬個資料,按行從1-500000存到test1.txt檔案中

2、打亂50萬個資料,按行存到test2.txt檔案中

3、使用排序方法進行排序,將結果儲存在test3.txt檔案中

4、冒泡法排序

bubblesort(array3, num_max);

5、插入法排序

insertsort(array3, num_max);

6、大頂堆法排序

heapify_sort(array3, num_max);

vi txtnum.c

gcc txtnum.c -o a.out

./a.out

原理不解釋了,如果資料過大,可以改寫為5000,**如下:

#include #include #include #include #define num_max 500000

void swap(int arr, int a, int b)

void heapify(int array3, int n, int i)

int max = i;

int c1 = 2 * i + 1;

int c2 = 2 * i + 2;

if (c1 < n && array3[c1] > array3[max])

if (c2 < n && array3[c2] > array3[max])

if (max != i) }

void build_heapify(int array3, int n)

}void heapify_sort(int array3, int n)

}void bubblesort(int *array3 ,int n)

} }}void insertsort(int *array3,int n)

} }}int main( int argc, char *ar** )

for (j=0; jfclose(fp1);

for ( k=0;k< num_max; k++)

fp2 = fopen("test2.txt","w");

for ( k=0;k< num_max; k++)

fclose(fp2);

fp2 = fopen("test2.txt","r");

for ( k=0;k< num_max; k++)

fclose(fp2);

fp3 = fopen("test3.txt","w");

//bubblesort(array3, num_max);

//insertsort(array3, num_max);

heapify_sort(array3, num_max);

for ( k=0;k< num_max; k++)

fclose(fp3);

}

大頂堆排序

堆排序的思想借助了二叉排序樹,時間複雜度 o nlgn 空間複雜度o n 首先需要構建堆,堆分為大頂堆和小頂堆,如果是大頂堆,任意乙個元素,滿足arr i arr 2 i 1 arr i arr 2 i 2 小頂堆滿足arr i arr 2 i 1 arr i arr 2 i 2 堆本質上是乙個完全...

大頂堆排序

利用大頂堆排序 自己建立堆!大頂堆 include using namespace std 交換陣列中兩個數的函式 void swap int arr,int i,int j heapify的過程 void heapify int tree,int n,int i void build heap i...

堆排序(大頂堆)

ifndef maxheap define maxheap includeusing namespace std const int capacity 100 class maxheap void push const int data void initialize int a,int thesi...